diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..5182c9ada --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.out +*.out_py3 +*.pyc +*.pyo diff --git a/README b/README index fb3591837..a85cef024 100644 --- a/README +++ b/README @@ -1,137 +1,185 @@ Online Python Tutor -Copyright (C) 2010 Philip J. Guo (philip@pgbovine.net) -https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +http://pythontutor.com/ +https://github.com/pgbovine/OnlinePythonTutor/ -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . +Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) -====== -Introduction: +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -The Online Python Tutor is a web application where you can type Python -scripts directly into your web browser, execute those scripts, and -single-step FORWARDS AND BACKWARDS through execution in order to view -the run-time state of all data structures. +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. -Using this tool, teachers and students can write small Python code -snippets together and see what happens to the data structures when the -code gets executed. - -Try it out live at: http://www.onlinepythontutor.com/ +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ====== -System architecture overview: - -The Online Python Tutor is implemented as a web application, with a -JavaScript front-end making AJAX calls to a pure-Python back-end. - -The back-end has been tested on an Apache server running Python 2.5 -through CGI. Note that it will probably fail in subtle ways on other -Python 2.X (and will DEFINITELY fail on Python 3.X). Peter Wentworth -has create a port to Python 3.X, and hopefully we can eventually -integrate his code into my repository. - - -The front-end is HTML/JavaScript (using the jQuery library). It's -responsible for the input text box, submitting the Python code (as -plaintext) to the back-end, receiving an execution trace from the -back-end, and then rendering that trace as data structure -visualizations. The front-end code resides in these files in the -current directory: - - tutor.html - question.html - edu-python.js - edu-python-tutor.js - edu-python-questions.js - edu-python.css - jquery.textarea.js - .htaccess - to increase the size of allowed Apache HTTP responses - - (there are also other 3rd-party JavaScript library files) -Note on .htaccess: If your server limits the size of responses received -from HTTP requests, then you might need to use the following .htaccess -file included in your top-level (front-end) directory, to allow the -Online Python Tutor to receive traces from the back-end: +Summary: + + Online Python Tutor enables teachers and students to write Python + programs directly in the web browser, execute those programs, and then + step forwards and backwards through execution to view the run-time + state of data structures. - + So far, over 100,000 people have used Online Python Tutor to + understand and debug their programs, often as a supplement to + textbooks, lecture notes, and online programming tutorials. -# Set a ~2MB limit for response headers (bigger than default 512K limit) -SecResponseBodyLimit 2000000 - - - - -The back-end is a server-side CGI application that takes Python script -source code as input, executes the entire script (up to 200 executed -lines, to prevent infinite loops), and collects a full trace of all -variable values (i.e., data structures) after each line has been -executed. It then sends that full trace to the front-end in a -specially-encoded JSON format. The front-end then parses and visualizes -that trace and allows the user to single-step forwards AND backwards -through execution. - -The back-end resides in the cgi-bin/ sub-directory in this repository: - - cgi-bin/web_exec.py - the CGI entrance point to the back-end - cgi-bin/web_run_test.py - the CGI entrance point to the question - grading back-end - cgi-bin/pg_logger.py - the 'meat' of the back-end - cgi-bin/pg_encoder.py - encodes Python data into JSON - cgi-bin/demjson.py - 3rd-party JSON module, since Python 2.5 - doesn't have the built-in 'import json' - cgi-bin/create_db.py - for optional sqlite query logging - cgi-bin/db_common.py - for optional sqlite query logging - cgi-bin/.htaccess - for Apache CGI execute permissions - - -Due to the AJAX same-origin policy, the front-end and back-end must be -deployed on the same server (unless you do some fancy proxy magic). - - -====== -Original founding vision (from January 2010): +--- +All documentation is viewable online at: + https://github.com/pgbovine/OnlinePythonTutor/tree/master/v3/docs -I want to create a web-based interactive learning platform for students -to explore programming. I envision an HTML UI where a student can enter -in code and then single-step through it and see how the data structures -change during execution. +--- +Repository contents: -Key insight: I realized that for the small programs that teachers and -students write for educational purposes, it's possible to simply LOG -everything that happens to data structures during execution. Then we -can simply play back that log in the front-end, which allows -single-stepping forwards and also BACKWARDS. + tl;dr: the v3/ sub-directory contains the latest version of the code. -After all, we don't need students to be able to interactive probe and -make changes in the middle of execution, which is the only value-added -of a REAL debugger. +v1-v2/ -What kinds of things do we want to log? + Online Python Tutor version 1 - released on January 19, 2010 + "Release" email to 15 friends: - On the execution of each line, log: - - the line number just executed - - all data created by the program + Subject: version 0.0000001alpha of my online Python tutor + Body: + ''' + hi python fans (and non-fans) ... - Also log calls and returns of a student's function - (but NOT library functions) + this is what i've been hacking on for the past few days instead of + doing my research ;) i'm planning to use it as a platform for + creating interactive online programming tutorials as part of a + volunteer project ... + + http://python.pgrind.com/ -We can use the Python JSON module to encode data structures in JSON and -send it to the client's web browser + it'd be great to get your feedback on what i have so far. i'd love + to hear suggestions or complaints. thanks in advance! -The PDB debugger (Lib/pdb.py) is written in pure Python: - http://docs.python.org/library/pdb.html - - the bdb debugger framework is the C module that pdb calls - http://docs.python.org/library/bdb.html + please don't share this link yet, mostly because my app is still + buggy and insecure (i definitely don't want random peoples from the + internet trying to hack it right now!) + pg + ''' + + + Online Python Tutor version 2 - released on October 4, 2011 + "Release" email to 13 friends: + + Subject: Re: version 0.0000001alpha of my online Python tutor + Body: + ''' + Dear subset of people who cared about my prior email from almost 2 + years ago ... + + I've recently kicked it up a notch with a "2.0" version and am about + to do a public release soon. I'd really appreciate any feedback, + criticism, and especially bug reports on Internet Explorer ;) + + http://people.csail.mit.edu/pgbovine/opt-prerelease/ + + Please don't share the link yet since it will be dead soon when I + move this app to its permanent home. I just want to get some early + feedback to eliminate the obviously embarrassing bugs before launch. + + THANKS! + + pg + ''' + + +v3/ + + Online Python Tutor version 3 - Released on September 18, 2012 + to 153,000+ people on Google+: + https://plus.google.com/+ResearchatGoogle/posts/cseo9qi7LWq + + "Release" announcement from the Research @ Google G+ account: + ''' + Online Python Tutor: Web-Based Program Visualization for CS Education + + As part of his CS education work at Google, +Philip Guo has been + developing an open-source educational tool called Online Python Tutor + (http://www.pythontutor.com). This tool enables teachers and students + to write Python programs directly in the web browser and then + single-step forwards and backwards to visualize what the computer is + doing as it executes those programs. + + Program visualization for CS education is nothing new -- researchers + have been developing these sorts of tools for decades. However, most + of these tools never reach far beyond the confines of the researchers' + home universities due to the difficulty of installing and configuring + the visualization software. What makes Online Python Tutor unique and + effective is that it's the first known tool to adapt time-tested ideas + from the research literature (e.g., rendering of box-and-pointer + diagrams) for a web-based environment. Now anyone with a modern + browser can create, explore, and share their program visualizations by + simply visiting a web URL. + + This ease of access has been a major contributor to adoption: So far, + over 100,000 people have used Online Python Tutor to understand and + debug their programs, often as a supplement to learning from + textbooks, lecture notes, and online programming tutorials. In + addition, instructors in over a dozen universities such as MIT, UC + Berkeley, and the University of Washington have used it for teaching + introductory computer science courses. + + But this is just the beginning. Philip and his colleagues are now + building an online authoring environment so that, within the next few + months, teachers and students will be able to save their code snippets + and add annotations, discussion threads, lessons, and interactive + exercises on top of the associated visualizations. + + They are also actively seeking partnerships with educators at all + grade levels to deploy and improve Online Python Tutor. Please contact + Philip directly or re-share this post with educators who might be + interested in working with this tool in any capacity. + + Visit www.pythontutor.com to learn more and to start visualizing your + Python programs now! + ''' + +--- +Acknowledgments + +John DeNero - for helping with the official Python 3 port and lots of code patches +Chris Horne - https://github.com/lahwran - for security tips +Joshua Landau - joshua@landau.ws - for security tips +Peter Wentworth and his students - for working on the original Python 3 fork +Brad Miller - for adding pop-up question dialogs to visualizations +David Pritchard - for some enhancements to front-end +Peter Robinson - for v3/make_visualizations.py +Chris Meyers - for custom visualizations such as v3/matrix.py and v3/htmlFrame.py +Irene Chen - for holistic visualization mode -- v3/js/holistic.js + + +For advice and feedback from an instructor's perspective: + +Jennifer Campbell +John Dalbey +Fredo Durand +Michael Ernst +David Evans +Paul Gries +Adam Hartz +Tomas Lozano-Perez +Bertram Ludaescher +Brad Miller +Rob Miller +Peter Norvig +Andrew Petersen +David Pritchard +Suzanne Rivoire +David Wilkins diff --git a/cgi-bin/demjson.py b/cgi-bin/demjson.py deleted file mode 100644 index a513ee134..000000000 --- a/cgi-bin/demjson.py +++ /dev/null @@ -1,2138 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -r""" A JSON data encoder and decoder. - - This Python module implements the JSON (http://json.org/) data - encoding format; a subset of ECMAScript (aka JavaScript) for encoding - primitive data types (numbers, strings, booleans, lists, and - associative arrays) in a language-neutral simple text-based syntax. - - It can encode or decode between JSON formatted strings and native - Python data types. Normally you would use the encode() and decode() - functions defined by this module, but if you want more control over - the processing you can use the JSON class. - - This implementation tries to be as completely cormforming to all - intricacies of the standards as possible. It can operate in strict - mode (which only allows JSON-compliant syntax) or a non-strict mode - (which allows much more of the whole ECMAScript permitted syntax). - This includes complete support for Unicode strings (including - surrogate-pairs for non-BMP characters), and all number formats - including negative zero and IEEE 754 non-numbers such a NaN or - Infinity. - - The JSON/ECMAScript to Python type mappings are: - ---JSON--- ---Python--- - null None - undefined undefined (note 1) - Boolean (true,false) bool (True or False) - Integer int or long (note 2) - Float float - String str or unicode ( "..." or u"..." ) - Array [a, ...] list ( [...] ) - Object {a:b, ...} dict ( {...} ) - - -- Note 1. an 'undefined' object is declared in this module which - represents the native Python value for this type when in - non-strict mode. - - -- Note 2. some ECMAScript integers may be up-converted to Python - floats, such as 1e+40. Also integer -0 is converted to - float -0, so as to preserve the sign (which ECMAScript requires). - - In addition, when operating in non-strict mode, several IEEE 754 - non-numbers are also handled, and are mapped to specific Python - objects declared in this module: - - NaN (not a number) nan (float('nan')) - Infinity, +Infinity inf (float('inf')) - -Infinity neginf (float('-inf')) - - When encoding Python objects into JSON, you may use types other than - native lists or dictionaries, as long as they support the minimal - interfaces required of all sequences or mappings. This means you can - use generators and iterators, tuples, UserDict subclasses, etc. - - To make it easier to produce JSON encoded representations of user - defined classes, if the object has a method named json_equivalent(), - then it will call that method and attempt to encode the object - returned from it instead. It will do this recursively as needed and - before any attempt to encode the object using it's default - strategies. Note that any json_equivalent() method should return - "equivalent" Python objects to be encoded, not an already-encoded - JSON-formatted string. There is no such aid provided to decode - JSON back into user-defined classes as that would dramatically - complicate the interface. - - When decoding strings with this module it may operate in either - strict or non-strict mode. The strict mode only allows syntax which - is conforming to RFC 4627 (JSON), while the non-strict allows much - more of the permissible ECMAScript syntax. - - The following are permitted when processing in NON-STRICT mode: - - * Unicode format control characters are allowed anywhere in the input. - * All Unicode line terminator characters are recognized. - * All Unicode white space characters are recognized. - * The 'undefined' keyword is recognized. - * Hexadecimal number literals are recognized (e.g., 0xA6, 0177). - * String literals may use either single or double quote marks. - * Strings may contain \x (hexadecimal) escape sequences, as well as the - \v and \0 escape sequences. - * Lists may have omitted (elided) elements, e.g., [,,,,,], with - missing elements interpreted as 'undefined' values. - * Object properties (dictionary keys) can be of any of the - types: string literals, numbers, or identifiers (the later of - which are treated as if they are string literals)---as permitted - by ECMAScript. JSON only permits strings literals as keys. - - Concerning non-strict and non-ECMAScript allowances: - - * Octal numbers: If you allow the 'octal_numbers' behavior (which - is never enabled by default), then you can use octal integers - and octal character escape sequences (per the ECMAScript - standard Annex B.1.2). This behavior is allowed, if enabled, - because it was valid JavaScript at one time. - - * Multi-line string literals: Strings which are more than one - line long (contain embedded raw newline characters) are never - permitted. This is neither valid JSON nor ECMAScript. Some other - JSON implementations may allow this, but this module considers - that behavior to be a mistake. - - References: - * JSON (JavaScript Object Notation) - - * RFC 4627. The application/json Media Type for JavaScript Object Notation (JSON) - - * ECMA-262 3rd edition (1999) - - * IEEE 754-1985: Standard for Binary Floating-Point Arithmetic. - - -""" - -__author__ = "Deron Meranda " -__date__ = "2008-12-17" -__version__ = "1.4" -__credits__ = """Copyright (c) 2006-2008 Deron E. Meranda -Licensed under GNU LGPL 3.0 (GNU Lesser General Public License) or -later. See LICENSE.txt included with this software. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with this program. If not, see -or . - -""" - -# ------------------------------ -# useful global constants - -content_type = 'application/json' -file_ext = 'json' -hexdigits = '0123456789ABCDEFabcdef' -octaldigits = '01234567' - -# ---------------------------------------------------------------------- -# Decimal and float types. -# -# If a JSON number can not be stored in a Python float without loosing -# precision and the Python has the decimal type, then we will try to -# use decimal instead of float. To make this determination we need to -# know the limits of the float type, but Python doesn't have an easy -# way to tell what the largest floating-point number it supports. So, -# we detemine the precision and scale of the float type by testing it. - -try: - # decimal module was introduced in Python 2.4 - import decimal -except ImportError: - decimal = None - -def determine_float_precision(): - """Returns a tuple (significant_digits, max_exponent) for the float type. - """ - import math - # Just count the digits in pi. The last two decimal digits - # may only be partial digits, so discount for them. - whole, frac = repr(math.pi).split('.') - sigdigits = len(whole) + len(frac) - 2 - - # This is a simple binary search. We find the largest exponent - # that the float() type can handle without going infinite or - # raising errors. - maxexp = None - minv = 0; maxv = 1000 - while True: - if minv+1 == maxv: - maxexp = minv - 1 - break - elif maxv < minv: - maxexp = None - break - m = (minv + maxv) // 2 - try: - f = repr(float( '1e+%d' % m )) - except ValueError: - f = None - else: - if not f or f[0] < '0' or f[0] > '9': - f = None - if not f: - # infinite - maxv = m - else: - minv = m - return sigdigits, maxexp - -float_sigdigits, float_maxexp = determine_float_precision() - -# ---------------------------------------------------------------------- -# The undefined value. -# -# ECMAScript has an undefined value (similar to yet distinct from null). -# Neither Python or strict JSON have support undefined, but to allow -# JavaScript behavior we must simulate it. - -class _undefined_class(object): - """Represents the ECMAScript 'undefined' value.""" - __slots__ = [] - def __repr__(self): - return self.__module__ + '.undefined' - def __str__(self): - return 'undefined' - def __nonzero__(self): - return False -undefined = _undefined_class() -del _undefined_class - - -# ---------------------------------------------------------------------- -# Non-Numbers: NaN, Infinity, -Infinity -# -# ECMAScript has official support for non-number floats, although -# strict JSON does not. Python doesn't either. So to support the -# full JavaScript behavior we must try to add them into Python, which -# is unfortunately a bit of black magic. If our python implementation -# happens to be built on top of IEEE 754 we can probably trick python -# into using real floats. Otherwise we must simulate it with classes. - -def _nonnumber_float_constants(): - """Try to return the Nan, Infinity, and -Infinity float values. - - This is unnecessarily complex because there is no standard - platform- independent way to do this in Python as the language - (opposed to some implementation of it) doesn't discuss - non-numbers. We try various strategies from the best to the - worst. - - If this Python interpreter uses the IEEE 754 floating point - standard then the returned values will probably be real instances - of the 'float' type. Otherwise a custom class object is returned - which will attempt to simulate the correct behavior as much as - possible. - - """ - try: - # First, try (mostly portable) float constructor. Works under - # Linux x86 (gcc) and some Unices. - nan = float('nan') - inf = float('inf') - neginf = float('-inf') - except ValueError: - try: - # Try the AIX (PowerPC) float constructors - nan = float('NaNQ') - inf = float('INF') - neginf = float('-INF') - except ValueError: - try: - # Next, try binary unpacking. Should work under - # platforms using IEEE 754 floating point. - import struct, sys - xnan = '7ff8000000000000'.decode('hex') # Quiet NaN - xinf = '7ff0000000000000'.decode('hex') - xcheck = 'bdc145651592979d'.decode('hex') # -3.14159e-11 - # Could use float.__getformat__, but it is a new python feature, - # so we use sys.byteorder. - if sys.byteorder == 'big': - nan = struct.unpack('d', xnan)[0] - inf = struct.unpack('d', xinf)[0] - check = struct.unpack('d', xcheck)[0] - else: - nan = struct.unpack('d', xnan[::-1])[0] - inf = struct.unpack('d', xinf[::-1])[0] - check = struct.unpack('d', xcheck[::-1])[0] - neginf = - inf - if check != -3.14159e-11: - raise ValueError('Unpacking raw IEEE 754 floats does not work') - except (ValueError, TypeError): - # Punt, make some fake classes to simulate. These are - # not perfect though. For instance nan * 1.0 == nan, - # as expected, but 1.0 * nan == 0.0, which is wrong. - class nan(float): - """An approximation of the NaN (not a number) floating point number.""" - def __repr__(self): return 'nan' - def __str__(self): return 'nan' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): return self - def __rmul__(self,x): return self - def __div__(self,x): return self - def __rdiv__(self,x): return self - def __divmod__(self,x): return (self,self) - def __rdivmod__(self,x): return (self,self) - def __mod__(self,x): return self - def __rmod__(self,x): return self - def __pow__(self,exp): return self - def __rpow__(self,exp): return self - def __neg__(self): return self - def __pos__(self): return self - def __abs__(self): return self - def __lt__(self,x): return False - def __le__(self,x): return False - def __eq__(self,x): return False - def __neq__(self,x): return True - def __ge__(self,x): return False - def __gt__(self,x): return False - def __complex__(self,*a): raise NotImplementedError('NaN can not be converted to a complex') - if decimal: - nan = decimal.Decimal('NaN') - else: - nan = nan() - class inf(float): - """An approximation of the +Infinity floating point number.""" - def __repr__(self): return 'inf' - def __str__(self): return 'inf' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): - if x is neginf or x < 0: - return neginf - elif x == 0: - return nan - else: - return self - def __rmul__(self,x): return self.__mul__(x) - def __div__(self,x): - if x == 0: - raise ZeroDivisionError('float division') - elif x < 0: - return neginf - else: - return self - def __rdiv__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return 0.0 - def __divmod__(self,x): - if x == 0: - raise ZeroDivisionError('float divmod()') - elif x < 0: - return (nan,nan) - else: - return (self,self) - def __rdivmod__(self,x): - if x is inf or x is neginf or x is nan: - return (nan, nan) - return (0.0, x) - def __mod__(self,x): - if x == 0: - raise ZeroDivisionError('float modulo') - else: - return nan - def __rmod__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return x - def __pow__(self, exp): - if exp == 0: - return 1.0 - else: - return self - def __rpow__(self, x): - if -1 < x < 1: return 0.0 - elif x == 1.0: return 1.0 - elif x is nan or x is neginf or x < 0: - return nan - else: - return self - def __neg__(self): return neginf - def __pos__(self): return self - def __abs__(self): return self - def __lt__(self,x): return False - def __le__(self,x): - if x is self: - return True - else: - return False - def __eq__(self,x): - if x is self: - return True - else: - return False - def __neq__(self,x): - if x is self: - return False - else: - return True - def __ge__(self,x): return True - def __gt__(self,x): return True - def __complex__(self,*a): raise NotImplementedError('Infinity can not be converted to a complex') - if decimal: - inf = decimal.Decimal('Infinity') - else: - inf = inf() - class neginf(float): - """An approximation of the -Infinity floating point number.""" - def __repr__(self): return '-inf' - def __str__(self): return '-inf' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): - if x is self or x < 0: - return inf - elif x == 0: - return nan - else: - return self - def __rmul__(self,x): return self.__mul__(self) - def __div__(self,x): - if x == 0: - raise ZeroDivisionError('float division') - elif x < 0: - return inf - else: - return self - def __rdiv__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return -0.0 - def __divmod__(self,x): - if x == 0: - raise ZeroDivisionError('float divmod()') - elif x < 0: - return (nan,nan) - else: - return (self,self) - def __rdivmod__(self,x): - if x is inf or x is neginf or x is nan: - return (nan, nan) - return (-0.0, x) - def __mod__(self,x): - if x == 0: - raise ZeroDivisionError('float modulo') - else: - return nan - def __rmod__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return x - def __pow__(self,exp): - if exp == 0: - return 1.0 - else: - return self - def __rpow__(self, x): - if x is nan or x is inf or x is inf: - return nan - return 0.0 - def __neg__(self): return inf - def __pos__(self): return self - def __abs__(self): return inf - def __lt__(self,x): return True - def __le__(self,x): return True - def __eq__(self,x): - if x is self: - return True - else: - return False - def __neq__(self,x): - if x is self: - return False - else: - return True - def __ge__(self,x): - if x is self: - return True - else: - return False - def __gt__(self,x): return False - def __complex__(self,*a): raise NotImplementedError('-Infinity can not be converted to a complex') - if decimal: - neginf = decimal.Decimal('-Infinity') - else: - neginf = neginf(0) - return nan, inf, neginf - -nan, inf, neginf = _nonnumber_float_constants() -del _nonnumber_float_constants - - -# ---------------------------------------------------------------------- -# String processing helpers - -unsafe_string_chars = '"\\' + ''.join([chr(i) for i in range(0x20)]) -def skipstringsafe( s, start=0, end=None ): - i = start - #if end is None: - # end = len(s) - while i < end and s[i] not in unsafe_string_chars: - #c = s[i] - #if c in unsafe_string_chars: - # break - i += 1 - return i -def skipstringsafe_slow( s, start=0, end=None ): - i = start - if end is None: - end = len(s) - while i < end: - c = s[i] - if c == '"' or c == '\\' or ord(c) <= 0x1f: - break - i += 1 - return i - -def extend_list_with_sep( orig_seq, extension_seq, sepchar='' ): - if not sepchar: - orig_seq.extend( extension_seq ) - else: - for i, x in enumerate(extension_seq): - if i > 0: - orig_seq.append( sepchar ) - orig_seq.append( x ) - -def extend_and_flatten_list_with_sep( orig_seq, extension_seq, separator='' ): - for i, part in enumerate(extension_seq): - if i > 0 and separator: - orig_seq.append( separator ) - orig_seq.extend( part ) - - -# ---------------------------------------------------------------------- -# Unicode helpers -# -# JSON requires that all JSON implementations must support the UTF-32 -# encoding (as well as UTF-8 and UTF-16). But earlier versions of -# Python did not provide a UTF-32 codec. So we must implement UTF-32 -# ourselves in case we need it. - -def utf32le_encode( obj, errors='strict' ): - """Encodes a Unicode string into a UTF-32LE encoded byte string.""" - import struct - try: - import cStringIO as sio - except ImportError: - import StringIO as sio - f = sio.StringIO() - write = f.write - pack = struct.pack - for c in obj: - n = ord(c) - if 0xD800 <= n <= 0xDFFF: # surrogate codepoints are prohibited by UTF-32 - if errors == 'ignore': - continue - elif errors == 'replace': - n = ord('?') - else: - cname = 'U+%04X'%n - raise UnicodeError('UTF-32 can not encode surrogate characters',cname) - write( pack('L', n) ) - return f.getvalue() - - -def utf32le_decode( obj, errors='strict' ): - """Decodes a UTF-32LE byte string into a Unicode string.""" - if len(obj) % 4 != 0: - raise UnicodeError('UTF-32 decode error, data length not a multiple of 4 bytes') - import struct - unpack = struct.unpack - chars = [] - i = 0 - for i in range(0, len(obj), 4): - seq = obj[i:i+4] - n = unpack('L',seq)[0] - chars.append( unichr(n) ) - return u''.join( chars ) - - -def auto_unicode_decode( s ): - """Takes a string and tries to convert it to a Unicode string. - - This will return a Python unicode string type corresponding to the - input string (either str or unicode). The character encoding is - guessed by looking for either a Unicode BOM prefix, or by the - rules specified by RFC 4627. When in doubt it is assumed the - input is encoded in UTF-8 (the default for JSON). - - """ - if isinstance(s, unicode): - return s - if len(s) < 4: - return s.decode('utf8') # not enough bytes, assume default of utf-8 - # Look for BOM marker - import codecs - bom2 = s[:2] - bom4 = s[:4] - a, b, c, d = map(ord, s[:4]) # values of first four bytes - if bom4 == codecs.BOM_UTF32_LE: - encoding = 'utf-32le' - s = s[4:] - elif bom4 == codecs.BOM_UTF32_BE: - encoding = 'utf-32be' - s = s[4:] - elif bom2 == codecs.BOM_UTF16_LE: - encoding = 'utf-16le' - s = s[2:] - elif bom2 == codecs.BOM_UTF16_BE: - encoding = 'utf-16be' - s = s[2:] - # No BOM, so autodetect encoding used by looking at first four bytes - # according to RFC 4627 section 3. - elif a==0 and b==0 and c==0 and d!=0: # UTF-32BE - encoding = 'utf-32be' - elif a==0 and b!=0 and c==0 and d!=0: # UTF-16BE - encoding = 'utf-16be' - elif a!=0 and b==0 and c==0 and d==0: # UTF-32LE - encoding = 'utf-32le' - elif a!=0 and b==0 and c!=0 and d==0: # UTF-16LE - encoding = 'utf-16le' - else: #if a!=0 and b!=0 and c!=0 and d!=0: # UTF-8 - # JSON spec says default is UTF-8, so always guess it - # if we can't guess otherwise - encoding = 'utf8' - # Make sure the encoding is supported by Python - try: - cdk = codecs.lookup(encoding) - except LookupError: - if encoding.startswith('utf-32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - unis = utf32le_decode(s) - else: - unis = utf32be_decode(s) - else: - raise JSONDecodeError('this python has no codec for this character encoding',encoding) - else: - # Convert to unicode using a standard codec - unis = s.decode(encoding) - return unis - - -def surrogate_pair_as_unicode( c1, c2 ): - """Takes a pair of unicode surrogates and returns the equivalent unicode character. - - The input pair must be a surrogate pair, with c1 in the range - U+D800 to U+DBFF and c2 in the range U+DC00 to U+DFFF. - - """ - n1, n2 = ord(c1), ord(c2) - if n1 < 0xD800 or n1 > 0xDBFF or n2 < 0xDC00 or n2 > 0xDFFF: - raise JSONDecodeError('illegal Unicode surrogate pair',(c1,c2)) - a = n1 - 0xD800 - b = n2 - 0xDC00 - v = (a << 10) | b - v += 0x10000 - return unichr(v) - - -def unicode_as_surrogate_pair( c ): - """Takes a single unicode character and returns a sequence of surrogate pairs. - - The output of this function is a tuple consisting of one or two unicode - characters, such that if the input character is outside the BMP range - then the output is a two-character surrogate pair representing that character. - - If the input character is inside the BMP then the output tuple will have - just a single character...the same one. - - """ - n = ord(c) - if n < 0x10000: - return (unichr(n),) # in BMP, surrogate pair not required - v = n - 0x10000 - vh = (v >> 10) & 0x3ff # highest 10 bits - vl = v & 0x3ff # lowest 10 bits - w1 = 0xD800 | vh - w2 = 0xDC00 | vl - return (unichr(w1), unichr(w2)) - - -# ---------------------------------------------------------------------- -# Type identification - -def isnumbertype( obj ): - """Is the object of a Python number type (excluding complex)?""" - return isinstance(obj, (int,long,float)) \ - and not isinstance(obj, bool) \ - or obj is nan or obj is inf or obj is neginf - - -def isstringtype( obj ): - """Is the object of a Python string type?""" - if isinstance(obj, basestring): - return True - # Must also check for some other pseudo-string types - import types, UserString - return isinstance(obj, types.StringTypes) \ - or isinstance(obj, UserString.UserString) \ - or isinstance(obj, UserString.MutableString) - - -# ---------------------------------------------------------------------- -# Numeric helpers - -def decode_hex( hexstring ): - """Decodes a hexadecimal string into it's integer value.""" - # We don't use the builtin 'hex' codec in python since it can - # not handle odd numbers of digits, nor raise the same type - # of exceptions we want to. - n = 0 - for c in hexstring: - if '0' <= c <= '9': - d = ord(c) - ord('0') - elif 'a' <= c <= 'f': - d = ord(c) - ord('a') + 10 - elif 'A' <= c <= 'F': - d = ord(c) - ord('A') + 10 - else: - raise JSONDecodeError('not a hexadecimal number',hexstring) - # Could use ((n << 4 ) | d), but python 2.3 issues a FutureWarning. - n = (n * 16) + d - return n - - -def decode_octal( octalstring ): - """Decodes an octal string into it's integer value.""" - n = 0 - for c in octalstring: - if '0' <= c <= '7': - d = ord(c) - ord('0') - else: - raise JSONDecodeError('not an octal number',octalstring) - # Could use ((n << 3 ) | d), but python 2.3 issues a FutureWarning. - n = (n * 8) + d - return n - - -# ---------------------------------------------------------------------- -# Exception classes. - -class JSONError(ValueError): - """Our base class for all JSON-related errors. - - """ - def pretty_description(self): - err = self.args[0] - if len(self.args) > 1: - err += ': ' - for anum, a in enumerate(self.args[1:]): - if anum > 1: - err += ', ' - astr = repr(a) - if len(astr) > 20: - astr = astr[:20] + '...' - err += astr - return err - -class JSONDecodeError(JSONError): - """An exception class raised when a JSON decoding error (syntax error) occurs.""" - - -class JSONEncodeError(JSONError): - """An exception class raised when a python object can not be encoded as a JSON string.""" - - -#---------------------------------------------------------------------- -# The main JSON encoder/decoder class. - -class JSON(object): - """An encoder/decoder for JSON data streams. - - Usually you will call the encode() or decode() methods. The other - methods are for lower-level processing. - - Whether the JSON parser runs in strict mode (which enforces exact - compliance with the JSON spec) or the more forgiving non-string mode - can be affected by setting the 'strict' argument in the object's - initialization; or by assigning True or False to the 'strict' - property of the object. - - You can also adjust a finer-grained control over strictness by - allowing or preventing specific behaviors. You can get a list of - all the available behaviors by accessing the 'behaviors' property. - Likewise the allowed_behaviors and prevented_behaviors list which - behaviors will be allowed and which will not. Call the allow() - or prevent() methods to adjust these. - - """ - _escapes_json = { # character escapes in JSON - '"': '"', - '/': '/', - '\\': '\\', - 'b': '\b', - 'f': '\f', - 'n': '\n', - 'r': '\r', - 't': '\t', - } - - _escapes_js = { # character escapes in Javascript - '"': '"', - '\'': '\'', - '\\': '\\', - 'b': '\b', - 'f': '\f', - 'n': '\n', - 'r': '\r', - 't': '\t', - 'v': '\v', - '0': '\x00' - } - - # Following is a reverse mapping of escape characters, used when we - # output JSON. Only those escapes which are always safe (e.g., in JSON) - # are here. It won't hurt if we leave questionable ones out. - _rev_escapes = {'\n': '\\n', - '\t': '\\t', - '\b': '\\b', - '\r': '\\r', - '\f': '\\f', - '"': '\\"', - '\\': '\\\\'} - - def __init__(self, strict=False, compactly=True, escape_unicode=False): - """Creates a JSON encoder/decoder object. - - If 'strict' is set to True, then only strictly-conforming JSON - output will be produced. Note that this means that some types - of values may not be convertable and will result in a - JSONEncodeError exception. - - If 'compactly' is set to True, then the resulting string will - have all extraneous white space removed; if False then the - string will be "pretty printed" with whitespace and indentation - added to make it more readable. - - If 'escape_unicode' is set to True, then all non-ASCII characters - will be represented as a unicode escape sequence; if False then - the actual real unicode character will be inserted if possible. - - The 'escape_unicode' can also be a function, which when called - with a single argument of a unicode character will return True - if the character should be escaped or False if it should not. - - If you wish to extend the encoding to ba able to handle - additional types, you should subclass this class and override - the encode_default() method. - - """ - import sys - self._set_strictness(strict) - self._encode_compactly = compactly - try: - # see if we were passed a predicate function - b = escape_unicode(u'A') - self._encode_unicode_as_escapes = escape_unicode - except (ValueError, NameError, TypeError): - # Just set to True or False. We could use lambda x:True - # to make it more consistent (always a function), but it - # will be too slow, so we'll make explicit tests later. - self._encode_unicode_as_escapes = bool(escape_unicode) - self._sort_dictionary_keys = True - - # The following is a boolean map of the first 256 characters - # which will quickly tell us which of those characters never - # need to be escaped. - - self._asciiencodable = [32 <= c < 128 and not self._rev_escapes.has_key(chr(c)) - for c in range(0,255)] - - def _set_strictness(self, strict): - """Changes the strictness behavior. - - Pass True to be very strict about JSON syntax, or False to be looser. - """ - self._allow_any_type_at_start = not strict - self._allow_all_numeric_signs = not strict - self._allow_comments = not strict - self._allow_control_char_in_string = not strict - self._allow_hex_numbers = not strict - self._allow_initial_decimal_point = not strict - self._allow_js_string_escapes = not strict - self._allow_non_numbers = not strict - self._allow_nonescape_characters = not strict # "\z" -> "z" - self._allow_nonstring_keys = not strict - self._allow_omitted_array_elements = not strict - self._allow_single_quoted_strings = not strict - self._allow_trailing_comma_in_literal = not strict - self._allow_undefined_values = not strict - self._allow_unicode_format_control_chars = not strict - self._allow_unicode_whitespace = not strict - # Always disable this by default - self._allow_octal_numbers = False - - def allow(self, behavior): - """Allow the specified behavior (turn off a strictness check). - - The list of all possible behaviors is available in the behaviors property. - You can see which behaviors are currently allowed by accessing the - allowed_behaviors property. - - """ - p = '_allow_' + behavior - if hasattr(self, p): - setattr(self, p, True) - else: - raise AttributeError('Behavior is not known',behavior) - - def prevent(self, behavior): - """Prevent the specified behavior (turn on a strictness check). - - The list of all possible behaviors is available in the behaviors property. - You can see which behaviors are currently prevented by accessing the - prevented_behaviors property. - - """ - p = '_allow_' + behavior - if hasattr(self, p): - setattr(self, p, False) - else: - raise AttributeError('Behavior is not known',behavior) - - def _get_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_')]) - behaviors = property(_get_behaviors, - doc='List of known behaviors that can be passed to allow() or prevent() methods') - - def _get_allowed_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_') and getattr(self,n)]) - allowed_behaviors = property(_get_allowed_behaviors, - doc='List of known behaviors that are currently allowed') - - def _get_prevented_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_') and not getattr(self,n)]) - prevented_behaviors = property(_get_prevented_behaviors, - doc='List of known behaviors that are currently prevented') - - def _is_strict(self): - return not self.allowed_behaviors - strict = property(_is_strict, _set_strictness, - doc='True if adherence to RFC 4627 syntax is strict, or False is more generous ECMAScript syntax is permitted') - - - def isws(self, c): - """Determines if the given character is considered as white space. - - Note that Javscript is much more permissive on what it considers - to be whitespace than does JSON. - - Ref. ECMAScript section 7.2 - - """ - if not self._allow_unicode_whitespace: - return c in ' \t\n\r' - else: - if not isinstance(c,unicode): - c = unicode(c) - if c in u' \t\n\r\f\v': - return True - import unicodedata - return unicodedata.category(c) == 'Zs' - - def islineterm(self, c): - """Determines if the given character is considered a line terminator. - - Ref. ECMAScript section 7.3 - - """ - if c == '\r' or c == '\n': - return True - if c == u'\u2028' or c == u'\u2029': # unicodedata.category(c) in ['Zl', 'Zp'] - return True - return False - - def strip_format_control_chars(self, txt): - """Filters out all Unicode format control characters from the string. - - ECMAScript permits any Unicode "format control characters" to - appear at any place in the source code. They are to be - ignored as if they are not there before any other lexical - tokenization occurs. Note that JSON does not allow them. - - Ref. ECMAScript section 7.1. - - """ - import unicodedata - txt2 = filter( lambda c: unicodedata.category(unicode(c)) != 'Cf', - txt ) - return txt2 - - - def decode_null(self, s, i=0): - """Intermediate-level decoder for ECMAScript 'null' keyword. - - Takes a string and a starting index, and returns a Python - None object and the index of the next unparsed character. - - """ - if i < len(s) and s[i:i+4] == 'null': - return None, i+4 - raise JSONDecodeError('literal is not the JSON "null" keyword', s) - - def encode_undefined(self): - """Produces the ECMAScript 'undefined' keyword.""" - return 'undefined' - - def encode_null(self): - """Produces the JSON 'null' keyword.""" - return 'null' - - def decode_boolean(self, s, i=0): - """Intermediate-level decode for JSON boolean literals. - - Takes a string and a starting index, and returns a Python bool - (True or False) and the index of the next unparsed character. - - """ - if s[i:i+4] == 'true': - return True, i+4 - elif s[i:i+5] == 'false': - return False, i+5 - raise JSONDecodeError('literal value is not a JSON boolean keyword',s) - - def encode_boolean(self, b): - """Encodes the Python boolean into a JSON Boolean literal.""" - if bool(b): - return 'true' - return 'false' - - def decode_number(self, s, i=0, imax=None): - """Intermediate-level decoder for JSON numeric literals. - - Takes a string and a starting index, and returns a Python - suitable numeric type and the index of the next unparsed character. - - The returned numeric type can be either of a Python int, - long, or float. In addition some special non-numbers may - also be returned such as nan, inf, and neginf (technically - which are Python floats, but have no numeric value.) - - Ref. ECMAScript section 8.5. - - """ - if imax is None: - imax = len(s) - # Detect initial sign character(s) - if not self._allow_all_numeric_signs: - if s[i] == '+' or (s[i] == '-' and i+1 < imax and \ - s[i+1] in '+-'): - raise JSONDecodeError('numbers in strict JSON may only have a single "-" as a sign prefix',s[i:]) - sign = +1 - j = i # j will point after the sign prefix - while j < imax and s[j] in '+-': - if s[j] == '-': sign = sign * -1 - j += 1 - # Check for ECMAScript symbolic non-numbers - if s[j:j+3] == 'NaN': - if self._allow_non_numbers: - return nan, j+3 - else: - raise JSONDecodeError('NaN literals are not allowed in strict JSON') - elif s[j:j+8] == 'Infinity': - if self._allow_non_numbers: - if sign < 0: - return neginf, j+8 - else: - return inf, j+8 - else: - raise JSONDecodeError('Infinity literals are not allowed in strict JSON') - elif s[j:j+2] in ('0x','0X'): - if self._allow_hex_numbers: - k = j+2 - while k < imax and s[k] in hexdigits: - k += 1 - n = sign * decode_hex( s[j+2:k] ) - return n, k - else: - raise JSONDecodeError('hexadecimal literals are not allowed in strict JSON',s[i:]) - else: - # Decimal (or octal) number, find end of number. - # General syntax is: \d+[\.\d+][e[+-]?\d+] - k = j # will point to end of digit sequence - could_be_octal = ( k+1 < imax and s[k] == '0' ) # first digit is 0 - decpt = None # index into number of the decimal point, if any - ept = None # index into number of the e|E exponent start, if any - esign = '+' # sign of exponent - sigdigits = 0 # number of significant digits (approx, counts end zeros) - while k < imax and (s[k].isdigit() or s[k] in '.+-eE'): - c = s[k] - if c not in octaldigits: - could_be_octal = False - if c == '.': - if decpt is not None or ept is not None: - break - else: - decpt = k-j - elif c in 'eE': - if ept is not None: - break - else: - ept = k-j - elif c in '+-': - if not ept: - break - esign = c - else: #digit - if not ept: - sigdigits += 1 - k += 1 - number = s[j:k] # The entire number as a string - #print 'NUMBER IS: ', repr(number), ', sign', sign, ', esign', esign, \ - # ', sigdigits', sigdigits, \ - # ', decpt', decpt, ', ept', ept - - # Handle octal integers first as an exception. If octal - # is not enabled (the ECMAScipt standard) then just do - # nothing and treat the string as a decimal number. - if could_be_octal and self._allow_octal_numbers: - n = sign * decode_octal( number ) - return n, k - - # A decimal number. Do a quick check on JSON syntax restrictions. - if number[0] == '.' and not self._allow_initial_decimal_point: - raise JSONDecodeError('numbers in strict JSON must have at least one digit before the decimal point',s[i:]) - elif number[0] == '0' and \ - len(number) > 1 and number[1].isdigit(): - if self._allow_octal_numbers: - raise JSONDecodeError('initial zero digit is only allowed for octal integers',s[i:]) - else: - raise JSONDecodeError('initial zero digit must not be followed by other digits (octal numbers are not permitted)',s[i:]) - # Make sure decimal point is followed by a digit - if decpt is not None: - if decpt+1 >= len(number) or not number[decpt+1].isdigit(): - raise JSONDecodeError('decimal point must be followed by at least one digit',s[i:]) - # Determine the exponential part - if ept is not None: - if ept+1 >= len(number): - raise JSONDecodeError('exponent in number is truncated',s[i:]) - try: - exponent = int(number[ept+1:]) - except ValueError: - raise JSONDecodeError('not a valid exponent in number',s[i:]) - ##print 'EXPONENT', exponent - else: - exponent = 0 - # Try to make an int/long first. - if decpt is None and exponent >= 0: - # An integer - if ept: - n = int(number[:ept]) - else: - n = int(number) - n *= sign - if exponent: - n *= 10**exponent - if n == 0 and sign < 0: - # minus zero, must preserve negative sign so make a float - n = -0.0 - else: - try: - if decimal and (abs(exponent) > float_maxexp or sigdigits > float_sigdigits): - try: - n = decimal.Decimal(number) - n = n.normalize() - except decimal.Overflow: - if sign<0: - n = neginf - else: - n = inf - else: - n *= sign - else: - n = float(number) * sign - except ValueError: - raise JSONDecodeError('not a valid JSON numeric literal', s[i:j]) - return n, k - - def encode_number(self, n): - """Encodes a Python numeric type into a JSON numeric literal. - - The special non-numeric values of float('nan'), float('inf') - and float('-inf') are translated into appropriate JSON - literals. - - Note that Python complex types are not handled, as there is no - ECMAScript equivalent type. - - """ - if isinstance(n, complex): - if n.imag: - raise JSONEncodeError('Can not encode a complex number that has a non-zero imaginary part',n) - n = n.real - if isinstance(n, (int,long)): - return str(n) - if decimal and isinstance(n, decimal.Decimal): - return str(n) - global nan, inf, neginf - if n is nan: - return 'NaN' - elif n is inf: - return 'Infinity' - elif n is neginf: - return '-Infinity' - elif isinstance(n, float): - # Check for non-numbers. - # In python nan == inf == -inf, so must use repr() to distinguish - reprn = repr(n).lower() - if ('inf' in reprn and '-' in reprn) or n == neginf: - return '-Infinity' - elif 'inf' in reprn or n is inf: - return 'Infinity' - elif 'nan' in reprn or n is nan: - return 'NaN' - return repr(n) - else: - raise TypeError('encode_number expected an integral, float, or decimal number type',type(n)) - - def decode_string(self, s, i=0, imax=None): - """Intermediate-level decoder for JSON string literals. - - Takes a string and a starting index, and returns a Python - string (or unicode string) and the index of the next unparsed - character. - - """ - if imax is None: - imax = len(s) - if imax < i+2 or s[i] not in '"\'': - raise JSONDecodeError('string literal must be properly quoted',s[i:]) - closer = s[i] - if closer == '\'' and not self._allow_single_quoted_strings: - raise JSONDecodeError('string literals must use double quotation marks in strict JSON',s[i:]) - i += 1 # skip quote - if self._allow_js_string_escapes: - escapes = self._escapes_js - else: - escapes = self._escapes_json - ccallowed = self._allow_control_char_in_string - chunks = [] - _append = chunks.append - done = False - high_surrogate = None - while i < imax: - c = s[i] - # Make sure a high surrogate is immediately followed by a low surrogate - if high_surrogate and (i+1 >= imax or s[i:i+2] != '\\u'): - raise JSONDecodeError('High unicode surrogate must be followed by a low surrogate',s[i:]) - if c == closer: - i += 1 # skip end quote - done = True - break - elif c == '\\': - # Escaped character - i += 1 - if i >= imax: - raise JSONDecodeError('escape in string literal is incomplete',s[i-1:]) - c = s[i] - - if '0' <= c <= '7' and self._allow_octal_numbers: - # Handle octal escape codes first so special \0 doesn't kick in yet. - # Follow Annex B.1.2 of ECMAScript standard. - if '0' <= c <= '3': - maxdigits = 3 - else: - maxdigits = 2 - for k in range(i, i+maxdigits+1): - if k >= imax or s[k] not in octaldigits: - break - n = decode_octal(s[i:k]) - if n < 128: - _append( chr(n) ) - else: - _append( unichr(n) ) - i = k - continue - - if escapes.has_key(c): - _append(escapes[c]) - i += 1 - elif c == 'u' or c == 'x': - i += 1 - if c == 'u': - digits = 4 - else: # c== 'x' - if not self._allow_js_string_escapes: - raise JSONDecodeError(r'string literals may not use the \x hex-escape in strict JSON',s[i-1:]) - digits = 2 - if i+digits >= imax: - raise JSONDecodeError('numeric character escape sequence is truncated',s[i-1:]) - n = decode_hex( s[i:i+digits] ) - if high_surrogate: - # Decode surrogate pair and clear high surrogate - _append( surrogate_pair_as_unicode( high_surrogate, unichr(n) ) ) - high_surrogate = None - elif n < 128: - # ASCII chars always go in as a str - _append( chr(n) ) - elif 0xd800 <= n <= 0xdbff: # high surrogate - if imax < i + digits + 2 or s[i+digits] != '\\' or s[i+digits+1] != 'u': - raise JSONDecodeError('High unicode surrogate must be followed by a low surrogate',s[i-2:]) - high_surrogate = unichr(n) # remember until we get to the low surrogate - elif 0xdc00 <= n <= 0xdfff: # low surrogate - raise JSONDecodeError('Low unicode surrogate must be proceeded by a high surrogate',s[i-2:]) - else: - # Other chars go in as a unicode char - _append( unichr(n) ) - i += digits - else: - # Unknown escape sequence - if self._allow_nonescape_characters: - _append( c ) - i += 1 - else: - raise JSONDecodeError('unsupported escape code in JSON string literal',s[i-1:]) - elif ord(c) <= 0x1f: # A control character - if self.islineterm(c): - raise JSONDecodeError('line terminator characters must be escaped inside string literals',s[i:]) - elif ccallowed: - _append( c ) - i += 1 - else: - raise JSONDecodeError('control characters must be escaped inside JSON string literals',s[i:]) - else: # A normal character; not an escape sequence or end-quote. - # Find a whole sequence of "safe" characters so we can append them - # all at once rather than one a time, for speed. - j = i - i += 1 - while i < imax and s[i] not in unsafe_string_chars and s[i] != closer: - i += 1 - _append(s[j:i]) - if not done: - raise JSONDecodeError('string literal is not terminated with a quotation mark',s) - s = ''.join( chunks ) - return s, i - - def encode_string(self, s): - """Encodes a Python string into a JSON string literal. - - """ - # Must handle instances of UserString specially in order to be - # able to use ord() on it's simulated "characters". - import UserString - if isinstance(s, (UserString.UserString, UserString.MutableString)): - def tochar(c): - return c.data - else: - # Could use "lambda c:c", but that is too slow. So we set to None - # and use an explicit if test inside the loop. - tochar = None - - chunks = [] - chunks.append('"') - revesc = self._rev_escapes - asciiencodable = self._asciiencodable - encunicode = self._encode_unicode_as_escapes - i = 0 - imax = len(s) - while i < imax: - if tochar: - c = tochar(s[i]) - else: - c = s[i] - cord = ord(c) - if cord < 256 and asciiencodable[cord] and isinstance(encunicode, bool): - # Contiguous runs of plain old printable ASCII can be copied - # directly to the JSON output without worry (unless the user - # has supplied a custom is-encodable function). - j = i - i += 1 - while i < imax: - if tochar: - c = tochar(s[i]) - else: - c = s[i] - cord = ord(c) - if cord < 256 and asciiencodable[cord]: - i += 1 - else: - break - chunks.append( unicode(s[j:i]) ) - elif revesc.has_key(c): - # Has a shortcut escape sequence, like "\n" - chunks.append(revesc[c]) - i += 1 - elif cord <= 0x1F: - # Always unicode escape ASCII-control characters - chunks.append(r'\u%04x' % cord) - i += 1 - elif 0xD800 <= cord <= 0xDFFF: - # A raw surrogate character! This should never happen - # and there's no way to include it in the JSON output. - # So all we can do is complain. - cname = 'U+%04X' % cord - raise JSONEncodeError('can not include or escape a Unicode surrogate character',cname) - elif cord <= 0xFFFF: - # Other BMP Unicode character - if isinstance(encunicode, bool): - doesc = encunicode - else: - doesc = encunicode( c ) - if doesc: - chunks.append(r'\u%04x' % cord) - else: - chunks.append( c ) - i += 1 - else: # ord(c) >= 0x10000 - # Non-BMP Unicode - if isinstance(encunicode, bool): - doesc = encunicode - else: - doesc = encunicode( c ) - if doesc: - for surrogate in unicode_as_surrogate_pair(c): - chunks.append(r'\u%04x' % ord(surrogate)) - else: - chunks.append( c ) - i += 1 - chunks.append('"') - return ''.join( chunks ) - - def skip_comment(self, txt, i=0): - """Skips an ECMAScript comment, either // or /* style. - - The contents of the comment are returned as a string, as well - as the index of the character immediately after the comment. - - """ - if i+1 >= len(txt) or txt[i] != '/' or txt[i+1] not in '/*': - return None, i - if not self._allow_comments: - raise JSONDecodeError('comments are not allowed in strict JSON',txt[i:]) - multiline = (txt[i+1] == '*') - istart = i - i += 2 - while i < len(txt): - if multiline: - if txt[i] == '*' and i+1 < len(txt) and txt[i+1] == '/': - j = i+2 - break - elif txt[i] == '/' and i+1 < len(txt) and txt[i+1] == '*': - raise JSONDecodeError('multiline /* */ comments may not nest',txt[istart:i+1]) - else: - if self.islineterm(txt[i]): - j = i # line terminator is not part of comment - break - i += 1 - - if i >= len(txt): - if not multiline: - j = len(txt) # // comment terminated by end of file is okay - else: - raise JSONDecodeError('comment was never terminated',txt[istart:]) - return txt[istart:j], j - - def skipws(self, txt, i=0, imax=None, skip_comments=True): - """Skips whitespace. - """ - if not self._allow_comments and not self._allow_unicode_whitespace: - if imax is None: - imax = len(txt) - while i < imax and txt[i] in ' \r\n\t': - i += 1 - return i - else: - return self.skipws_any(txt, i, imax, skip_comments) - - def skipws_any(self, txt, i=0, imax=None, skip_comments=True): - """Skips all whitespace, including comments and unicode whitespace - - Takes a string and a starting index, and returns the index of the - next non-whitespace character. - - If skip_comments is True and not running in strict JSON mode, then - comments will be skipped over just like whitespace. - - """ - if imax is None: - imax = len(txt) - while i < imax: - if txt[i] == '/': - cmt, i = self.skip_comment(txt, i) - if i < imax and self.isws(txt[i]): - i += 1 - else: - break - return i - - def decode_composite(self, txt, i=0, imax=None): - """Intermediate-level JSON decoder for composite literal types (array and object). - - Takes text and a starting index, and returns either a Python list or - dictionary and the index of the next unparsed character. - - """ - if imax is None: - imax = len(txt) - i = self.skipws(txt, i, imax) - starti = i - if i >= imax or txt[i] not in '{[': - raise JSONDecodeError('composite object must start with "[" or "{"',txt[i:]) - if txt[i] == '[': - isdict = False - closer = ']' - obj = [] - else: - isdict = True - closer = '}' - obj = {} - i += 1 # skip opener - i = self.skipws(txt, i, imax) - - if i < imax and txt[i] == closer: - # empty composite - i += 1 - done = True - else: - saw_value = False # set to false at beginning and after commas - done = False - while i < imax: - i = self.skipws(txt, i, imax) - if i < imax and (txt[i] == ',' or txt[i] == closer): - c = txt[i] - i += 1 - if c == ',': - if not saw_value: - # no preceeding value, an elided (omitted) element - if isdict: - raise JSONDecodeError('can not omit elements of an object (dictionary)') - if self._allow_omitted_array_elements: - if self._allow_undefined_values: - obj.append( undefined ) - else: - obj.append( None ) - else: - raise JSONDecodeError('strict JSON does not permit omitted array (list) elements',txt[i:]) - saw_value = False - continue - else: # c == closer - if not saw_value and not self._allow_trailing_comma_in_literal: - if isdict: - raise JSONDecodeError('strict JSON does not allow a final comma in an object (dictionary) literal',txt[i-2:]) - else: - raise JSONDecodeError('strict JSON does not allow a final comma in an array (list) literal',txt[i-2:]) - done = True - break - - # Decode the item - if isdict and self._allow_nonstring_keys: - r = self.decodeobj(txt, i, identifier_as_string=True) - else: - r = self.decodeobj(txt, i, identifier_as_string=False) - if r: - if saw_value: - # two values without a separating comma - raise JSONDecodeError('values must be separated by a comma', txt[i:r[1]]) - saw_value = True - i = self.skipws(txt, r[1], imax) - if isdict: - key = r[0] # Ref 11.1.5 - if not isstringtype(key): - if isnumbertype(key): - if not self._allow_nonstring_keys: - raise JSONDecodeError('strict JSON only permits string literals as object properties (dictionary keys)',txt[starti:]) - else: - raise JSONDecodeError('object properties (dictionary keys) must be either string literals or numbers',txt[starti:]) - if i >= imax or txt[i] != ':': - raise JSONDecodeError('object property (dictionary key) has no value, expected ":"',txt[starti:]) - i += 1 - i = self.skipws(txt, i, imax) - rval = self.decodeobj(txt, i) - if rval: - i = self.skipws(txt, rval[1], imax) - obj[key] = rval[0] - else: - raise JSONDecodeError('object property (dictionary key) has no value',txt[starti:]) - else: # list - obj.append( r[0] ) - else: # not r - if isdict: - raise JSONDecodeError('expected a value, or "}"',txt[i:]) - elif not self._allow_omitted_array_elements: - raise JSONDecodeError('expected a value or "]"',txt[i:]) - else: - raise JSONDecodeError('expected a value, "," or "]"',txt[i:]) - # end while - if not done: - if isdict: - raise JSONDecodeError('object literal (dictionary) is not terminated',txt[starti:]) - else: - raise JSONDecodeError('array literal (list) is not terminated',txt[starti:]) - return obj, i - - def decode_javascript_identifier(self, name): - """Convert a JavaScript identifier into a Python string object. - - This method can be overriden by a subclass to redefine how JavaScript - identifiers are turned into Python objects. By default this just - converts them into strings. - - """ - return name - - def decodeobj(self, txt, i=0, imax=None, identifier_as_string=False, only_object_or_array=False): - """Intermediate-level JSON decoder. - - Takes a string and a starting index, and returns a two-tuple consting - of a Python object and the index of the next unparsed character. - - If there is no value at all (empty string, etc), the None is - returned instead of a tuple. - - """ - if imax is None: - imax = len(txt) - obj = None - i = self.skipws(txt, i, imax) - if i >= imax: - raise JSONDecodeError('Unexpected end of input') - c = txt[i] - - if c == '[' or c == '{': - obj, i = self.decode_composite(txt, i, imax) - elif only_object_or_array: - raise JSONDecodeError('JSON document must start with an object or array type only', txt[i:i+20]) - elif c == '"' or c == '\'': - obj, i = self.decode_string(txt, i, imax) - elif c.isdigit() or c in '.+-': - obj, i = self.decode_number(txt, i, imax) - elif c.isalpha() or c in'_$': - j = i - while j < imax and (txt[j].isalnum() or txt[j] in '_$'): - j += 1 - kw = txt[i:j] - if kw == 'null': - obj, i = None, j - elif kw == 'true': - obj, i = True, j - elif kw == 'false': - obj, i = False, j - elif kw == 'undefined': - if self._allow_undefined_values: - obj, i = undefined, j - else: - raise JSONDecodeError('strict JSON does not allow undefined elements',txt[i:]) - elif kw == 'NaN' or kw == 'Infinity': - obj, i = self.decode_number(txt, i) - else: - if identifier_as_string: - obj, i = self.decode_javascript_identifier(kw), j - else: - raise JSONDecodeError('unknown keyword or identifier',kw) - else: - raise JSONDecodeError('can not decode value',txt[i:]) - return obj, i - - - - def decode(self, txt): - """Decodes a JSON-endoded string into a Python object.""" - if self._allow_unicode_format_control_chars: - txt = self.strip_format_control_chars(txt) - r = self.decodeobj(txt, 0, only_object_or_array=not self._allow_any_type_at_start) - if not r: - raise JSONDecodeError('can not decode value',txt) - else: - obj, i = r - i = self.skipws(txt, i) - if i < len(txt): - raise JSONDecodeError('unexpected or extra text',txt[i:]) - return obj - - def encode(self, obj, nest_level=0): - """Encodes the Python object into a JSON string representation. - - This method will first attempt to encode an object by seeing - if it has a json_equivalent() method. If so than it will - call that method and then recursively attempt to encode - the object resulting from that call. - - Next it will attempt to determine if the object is a native - type or acts like a squence or dictionary. If so it will - encode that object directly. - - Finally, if no other strategy for encoding the object of that - type exists, it will call the encode_default() method. That - method currently raises an error, but it could be overridden - by subclasses to provide a hook for extending the types which - can be encoded. - - """ - chunks = [] - self.encode_helper(chunks, obj, nest_level) - return ''.join( chunks ) - - def encode_helper(self, chunklist, obj, nest_level): - #print 'encode_helper(chunklist=%r, obj=%r, nest_level=%r)'%(chunklist,obj,nest_level) - if hasattr(obj, 'json_equivalent'): - json = self.encode_equivalent( obj, nest_level=nest_level ) - if json is not None: - chunklist.append( json ) - return - if obj is None: - chunklist.append( self.encode_null() ) - elif obj is undefined: - if self._allow_undefined_values: - chunklist.append( self.encode_undefined() ) - else: - raise JSONEncodeError('strict JSON does not permit "undefined" values') - elif isinstance(obj, bool): - chunklist.append( self.encode_boolean(obj) ) - elif isinstance(obj, (int,long,float,complex)) or \ - (decimal and isinstance(obj, decimal.Decimal)): - chunklist.append( self.encode_number(obj) ) - elif isinstance(obj, basestring) or isstringtype(obj): - chunklist.append( self.encode_string(obj) ) - else: - self.encode_composite(chunklist, obj, nest_level) - - def encode_composite(self, chunklist, obj, nest_level): - """Encodes just dictionaries, lists, or sequences. - - Basically handles any python type for which iter() can create - an iterator object. - - This method is not intended to be called directly. Use the - encode() method instead. - - """ - #print 'encode_complex_helper(chunklist=%r, obj=%r, nest_level=%r)'%(chunklist,obj,nest_level) - try: - # Is it a dictionary or UserDict? Try iterkeys method first. - it = obj.iterkeys() - except AttributeError: - try: - # Is it a sequence? Try to make an iterator for it. - it = iter(obj) - except TypeError: - it = None - if it is not None: - # Does it look like a dictionary? Check for a minimal dict or - # UserDict interface. - isdict = hasattr(obj, '__getitem__') and hasattr(obj, 'keys') - compactly = self._encode_compactly - if isdict: - chunklist.append('{') - if compactly: - dictcolon = ':' - else: - dictcolon = ' : ' - else: - chunklist.append('[') - #print nest_level, 'opening sequence:', repr(chunklist) - if not compactly: - indent0 = ' ' * nest_level - indent = ' ' * (nest_level+1) - chunklist.append(' ') - sequence_chunks = [] # use this to allow sorting afterwards if dict - try: # while not StopIteration - numitems = 0 - while True: - obj2 = it.next() - if obj2 is obj: - raise JSONEncodeError('trying to encode an infinite sequence',obj) - if isdict and not isstringtype(obj2): - # Check JSON restrictions on key types - if isnumbertype(obj2): - if not self._allow_nonstring_keys: - raise JSONEncodeError('object properties (dictionary keys) must be strings in strict JSON',obj2) - else: - raise JSONEncodeError('object properties (dictionary keys) can only be strings or numbers in ECMAScript',obj2) - - # Encode this item in the sequence and put into item_chunks - item_chunks = [] - self.encode_helper( item_chunks, obj2, nest_level=nest_level+1 ) - if isdict: - item_chunks.append(dictcolon) - obj3 = obj[obj2] - self.encode_helper(item_chunks, obj3, nest_level=nest_level+2) - - #print nest_level, numitems, 'item:', repr(obj2) - #print nest_level, numitems, 'sequence_chunks:', repr(sequence_chunks) - #print nest_level, numitems, 'item_chunks:', repr(item_chunks) - #extend_list_with_sep(sequence_chunks, item_chunks) - sequence_chunks.append(item_chunks) - #print nest_level, numitems, 'new sequence_chunks:', repr(sequence_chunks) - numitems += 1 - except StopIteration: - pass - - if isdict and self._sort_dictionary_keys: - sequence_chunks.sort() # Note sorts by JSON repr, not original Python object - if compactly: - sep = ',' - else: - sep = ',\n' + indent - - #print nest_level, 'closing sequence' - #print nest_level, 'chunklist:', repr(chunklist) - #print nest_level, 'sequence_chunks:', repr(sequence_chunks) - extend_and_flatten_list_with_sep( chunklist, sequence_chunks, sep ) - #print nest_level, 'new chunklist:', repr(chunklist) - - if not compactly: - if numitems > 1: - chunklist.append('\n' + indent0) - else: - chunklist.append(' ') - if isdict: - chunklist.append('}') - else: - chunklist.append(']') - else: # Can't create an iterator for the object - json2 = self.encode_default( obj, nest_level=nest_level ) - chunklist.append( json2 ) - - def encode_equivalent( self, obj, nest_level=0 ): - """This method is used to encode user-defined class objects. - - The object being encoded should have a json_equivalent() - method defined which returns another equivalent object which - is easily JSON-encoded. If the object in question has no - json_equivalent() method available then None is returned - instead of a string so that the encoding will attempt the next - strategy. - - If a caller wishes to disable the calling of json_equivalent() - methods, then subclass this class and override this method - to just return None. - - """ - if hasattr(obj, 'json_equivalent') \ - and callable(getattr(obj,'json_equivalent')): - obj2 = obj.json_equivalent() - if obj2 is obj: - # Try to prevent careless infinite recursion - raise JSONEncodeError('object has a json_equivalent() method that returns itself',obj) - json2 = self.encode( obj2, nest_level=nest_level ) - return json2 - else: - return None - - def encode_default( self, obj, nest_level=0 ): - """This method is used to encode objects into JSON which are not straightforward. - - This method is intended to be overridden by subclasses which wish - to extend this encoder to handle additional types. - - """ - raise JSONEncodeError('can not encode object into a JSON representation',obj) - - -# ------------------------------ - -def encode( obj, strict=False, compactly=True, escape_unicode=False, encoding=None ): - """Encodes a Python object into a JSON-encoded string. - - If 'strict' is set to True, then only strictly-conforming JSON - output will be produced. Note that this means that some types - of values may not be convertable and will result in a - JSONEncodeError exception. - - If 'compactly' is set to True, then the resulting string will - have all extraneous white space removed; if False then the - string will be "pretty printed" with whitespace and indentation - added to make it more readable. - - If 'escape_unicode' is set to True, then all non-ASCII characters - will be represented as a unicode escape sequence; if False then - the actual real unicode character will be inserted. - - If no encoding is specified (encoding=None) then the output will - either be a Python string (if entirely ASCII) or a Python unicode - string type. - - However if an encoding name is given then the returned value will - be a python string which is the byte sequence encoding the JSON - value. As the default/recommended encoding for JSON is UTF-8, - you should almost always pass in encoding='utf8'. - - """ - import sys - encoder = None # Custom codec encoding function - bom = None # Byte order mark to prepend to final output - cdk = None # Codec to use - if encoding is not None: - import codecs - try: - cdk = codecs.lookup(encoding) - except LookupError: - cdk = None - - if cdk: - pass - elif not cdk: - # No built-in codec was found, see if it is something we - # can do ourself. - encoding = encoding.lower() - if encoding.startswith('utf-32') or encoding.startswith('utf32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - encoder = utf32le_encode - elif encoding.endswith('be'): - encoder = utf32be_encode - else: - encoder = utf32be_encode - bom = codecs.BOM_UTF32_BE - elif encoding.startswith('ucs2') or encoding.startswith('ucs-2'): - # Python has no UCS-2, but we can simulate with - # UTF-16. We just need to force us to not try to - # encode anything past the BMP. - encoding = 'utf-16' - if not escape_unicode and not callable(escape_unicode): - escape_unicode = lambda c: (0xD800 <= ord(c) <= 0xDFFF) or ord(c) >= 0x10000 - else: - raise JSONEncodeError('this python has no codec for this character encoding',encoding) - - if not escape_unicode and not callable(escape_unicode): - if encoding and encoding.startswith('utf'): - # All UTF-x encodings can do the whole Unicode repertoire, so - # do nothing special. - pass - else: - # Even though we don't want to escape all unicode chars, - # the encoding being used may force us to do so anyway. - # We must pass in a function which says which characters - # the encoding can handle and which it can't. - def in_repertoire( c, encoding_func ): - try: - x = encoding_func( c, errors='strict' ) - except UnicodeError: - return False - return True - if encoder: - escape_unicode = lambda c: not in_repertoire(c, encoder) - elif cdk: - escape_unicode = lambda c: not in_repertoire(c, cdk[0]) - else: - pass # Let the JSON object deal with it - - j = JSON( strict=strict, compactly=compactly, escape_unicode=escape_unicode ) - - unitxt = j.encode( obj ) - if encoder: - txt = encoder( unitxt ) - elif encoding is not None: - txt = unitxt.encode( encoding ) - else: - txt = unitxt - if bom: - txt = bom + txt - return txt - - -def decode( txt, strict=False, encoding=None, **kw ): - """Decodes a JSON-encoded string into a Python object. - - If 'strict' is set to True, then those strings that are not - entirely strictly conforming to JSON will result in a - JSONDecodeError exception. - - The input string can be either a python string or a python unicode - string. If it is already a unicode string, then it is assumed - that no character set decoding is required. - - However, if you pass in a non-Unicode text string (i.e., a python - type 'str') then an attempt will be made to auto-detect and decode - the character encoding. This will be successful if the input was - encoded in any of UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE), - and of course plain ASCII works too. - - Note though that if you know the character encoding, then you - should convert to a unicode string yourself, or pass it the name - of the 'encoding' to avoid the guessing made by the auto - detection, as with - - python_object = demjson.decode( input_bytes, encoding='utf8' ) - - Optional keywords arguments must be of the form - allow_xxxx=True/False - or - prevent_xxxx=True/False - where each will allow or prevent the specific behavior, after the - evaluation of the 'strict' argument. For example, if strict=True - then by also passing 'allow_comments=True' then comments will be - allowed. If strict=False then prevent_comments=True will allow - everything except comments. - - """ - # Initialize the JSON object - j = JSON( strict=strict ) - for keyword, value in kw.items(): - if keyword.startswith('allow_'): - behavior = keyword[6:] - allow = bool(value) - elif keyword.startswith('prevent_'): - behavior = keyword[8:] - allow = not bool(value) - else: - raise ValueError('unknown keyword argument', keyword) - if allow: - j.allow(behavior) - else: - j.prevent(behavior) - - # Convert the input string into unicode if needed. - if isinstance(txt,unicode): - unitxt = txt - else: - if encoding is None: - unitxt = auto_unicode_decode( txt ) - else: - cdk = None # codec - decoder = None - import codecs - try: - cdk = codecs.lookup(encoding) - except LookupError: - encoding = encoding.lower() - decoder = None - if encoding.startswith('utf-32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - decoder = utf32le_decode - elif encoding.endswith('be'): - decoder = utf32be_decode - else: - if txt.startswith( codecs.BOM_UTF32_BE ): - decoder = utf32be_decode - txt = txt[4:] - elif txt.startswith( codecs.BOM_UTF32_LE ): - decoder = utf32le_decode - txt = txt[4:] - else: - if encoding.startswith('ucs'): - raise JSONDecodeError('UCS-4 encoded string must start with a BOM') - decoder = utf32be_decode # Default BE for UTF, per unicode spec - elif encoding.startswith('ucs2') or encoding.startswith('ucs-2'): - # Python has no UCS-2, but we can simulate with - # UTF-16. We just need to force us to not try to - # encode anything past the BMP. - encoding = 'utf-16' - - if decoder: - unitxt = decoder(txt) - elif encoding: - unitxt = txt.decode(encoding) - else: - raise JSONDecodeError('this python has no codec for this character encoding',encoding) - - # Check that the decoding seems sane. Per RFC 4627 section 3: - # "Since the first two characters of a JSON text will - # always be ASCII characters [RFC0020], ..." - # - # This check is probably not necessary, but it allows us to - # raise a suitably descriptive error rather than an obscure - # syntax error later on. - # - # Note that the RFC requirements of two ASCII characters seems - # to be an incorrect statement as a JSON string literal may - # have as it's first character any unicode character. Thus - # the first two characters will always be ASCII, unless the - # first character is a quotation mark. And in non-strict - # mode we can also have a few other characters too. - if len(unitxt) > 2: - first, second = unitxt[:2] - if first in '"\'': - pass # second can be anything inside string literal - else: - if ((ord(first) < 0x20 or ord(first) > 0x7f) or \ - (ord(second) < 0x20 or ord(second) > 0x7f)) and \ - (not j.isws(first) and not j.isws(second)): - # Found non-printable ascii, must check unicode - # categories to see if the character is legal. - # Only whitespace, line and paragraph separators, - # and format control chars are legal here. - import unicodedata - catfirst = unicodedata.category(unicode(first)) - catsecond = unicodedata.category(unicode(second)) - if catfirst not in ('Zs','Zl','Zp','Cf') or \ - catsecond not in ('Zs','Zl','Zp','Cf'): - raise JSONDecodeError('the decoded string is gibberish, is the encoding correct?',encoding) - # Now ready to do the actual decoding - obj = j.decode( unitxt ) - return obj - -# end file diff --git a/cgi-bin/load_question.py b/cgi-bin/load_question.py deleted file mode 100755 index af67e8230..000000000 --- a/cgi-bin/load_question.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/python2.5 - -# Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) -# https://github.com/pgbovine/OnlinePythonTutor/ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# Load a question file in the 'questions/' sub-directory, parse it, -# and return it to the caller in JSON format -QUESTIONS_DIR = '../questions/' - -from parse_questions import parseQuestionsFile - -import cgi, os, demjson - -form = cgi.FieldStorage() -question_file = form['question_file'].value - -fn = QUESTIONS_DIR + question_file + '.txt' -assert os.path.isfile(fn) - - -# Crucial first line to make sure that Apache serves this data -# correctly - DON'T FORGET THE EXTRA NEWLINES!!!: -print "Content-type: text/plain; charset=iso-8859-1\n\n" -print demjson.encode(parseQuestionsFile(fn)) diff --git a/jquery.textarea.js b/jquery.textarea.js deleted file mode 100644 index cd8acd5e4..000000000 --- a/jquery.textarea.js +++ /dev/null @@ -1,260 +0,0 @@ -// include this file AFTER including jQuery - -/* - * Tabby jQuery plugin version 0.12 - * - * Ted Devito - http://teddevito.com/demos/textarea.html - * - * You should have received a copy of the GNU General Public License - * along with Easy Widgets. If not, see - * - * Plugin development pattern based on: http://www.learningjquery.com/2007/10/a-plugin-development-pattern - * - */ - -// create closure - -(function($) { - - // plugin definition - - $.fn.tabby = function(options) { - //debug(this); - // build main options before element iteration - var opts = $.extend({}, $.fn.tabby.defaults, options); - var pressed = $.fn.tabby.pressed; - - // iterate and reformat each matched element - return this.each(function() { - $this = $(this); - - // build element specific options - var options = $.meta ? $.extend({}, opts, $this.data()) : opts; - - $this.bind('keydown',function (e) { - var kc = $.fn.tabby.catch_kc(e); - if (16 == kc) pressed.shft = true; - /* - because both CTRL+TAB and ALT+TAB default to an event (changing tab/window) that - will prevent js from capturing the keyup event, we'll set a timer on releasing them. - */ - if (17 == kc) {pressed.ctrl = true; setTimeout("$.fn.tabby.pressed.ctrl = false;",1000);} - if (18 == kc) {pressed.alt = true; setTimeout("$.fn.tabby.pressed.alt = false;",1000);} - - if (9 == kc && !pressed.ctrl && !pressed.alt) { - e.preventDefault; // does not work in O9.63 ?? - pressed.last = kc; setTimeout("$.fn.tabby.pressed.last = null;",0); - process_keypress ($(e.target).get(0), pressed.shft, options); - return false; - } - - }).bind('keyup',function (e) { - if (16 == $.fn.tabby.catch_kc(e)) pressed.shft = false; - }).bind('blur',function (e) { // workaround for Opera -- http://www.webdeveloper.com/forum/showthread.php?p=806588 - if (9 == pressed.last) $(e.target).one('focus',function (e) {pressed.last = null;}).get(0).focus(); - }); - - }); - }; - - // define and expose any extra methods - $.fn.tabby.catch_kc = function(e) { return e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which; }; - $.fn.tabby.pressed = {shft : false, ctrl : false, alt : false, last: null}; - - // private function for debugging - function debug($obj) { - if (window.console && window.console.log) - window.console.log('textarea count: ' + $obj.size()); - }; - - function process_keypress (o,shft,options) { - var scrollTo = o.scrollTop; - //var tabString = String.fromCharCode(9); - - // gecko; o.setSelectionRange is only available when the text box has focus - if (o.setSelectionRange) gecko_tab (o, shft, options); - - // ie; document.selection is always available - else if (document.selection) ie_tab (o, shft, options); - - o.scrollTop = scrollTo; - } - - // plugin defaults - //$.fn.tabby.defaults = {tabString : String.fromCharCode(9)}; - // modified by pgbovine: - $.fn.tabby.defaults = {tabString : ' '}; - - function gecko_tab (o, shft, options) { - var ss = o.selectionStart; - var es = o.selectionEnd; - - // when there's no selection and we're just working with the caret, we'll add/remove the tabs at the caret, providing more control - if(ss == es) { - // SHIFT+TAB - if (shft) { - // check to the left of the caret first - //if ("\t" == o.value.substring(ss-options.tabString.length, ss)) { - // modified by pgbovine: - if (" " == o.value.substring(ss-options.tabString.length, ss)) { - o.value = o.value.substring(0, ss-options.tabString.length) + o.value.substring(ss); // put it back together omitting one character to the left - o.focus(); - o.setSelectionRange(ss - options.tabString.length, ss - options.tabString.length); - } - // then check to the right of the caret - else if ("\t" == o.value.substring(ss, ss + options.tabString.length)) { - o.value = o.value.substring(0, ss) + o.value.substring(ss + options.tabString.length); // put it back together omitting one character to the right - o.focus(); - o.setSelectionRange(ss,ss); - } - } - // TAB - else { - o.value = o.value.substring(0, ss) + options.tabString + o.value.substring(ss); - o.focus(); - o.setSelectionRange(ss + options.tabString.length, ss + options.tabString.length); - } - } - // selections will always add/remove tabs from the start of the line - else { - // split the textarea up into lines and figure out which lines are included in the selection - var lines = o.value.split("\n"); - var indices = new Array(); - var sl = 0; // start of the line - var el = 0; // end of the line - var sel = false; - for (var i in lines) { - el = sl + lines[i].length; - indices.push({start: sl, end: el, selected: (sl <= ss && el > ss) || (el >= es && sl < es) || (sl > ss && el < es)}); - sl = el + 1;// for "\n" - } - - // walk through the array of lines (indices) and add tabs where appropriate - var modifier = 0; - for (var i in indices) { - if (indices[i].selected) { - var pos = indices[i].start + modifier; // adjust for tabs already inserted/removed - // SHIFT+TAB - if (shft && options.tabString == o.value.substring(pos,pos+options.tabString.length)) { // only SHIFT+TAB if there's a tab at the start of the line - o.value = o.value.substring(0,pos) + o.value.substring(pos + options.tabString.length); // omit the tabstring to the right - modifier -= options.tabString.length; - } - // TAB - else if (!shft) { - o.value = o.value.substring(0,pos) + options.tabString + o.value.substring(pos); // insert the tabstring - modifier += options.tabString.length; - } - } - } - o.focus(); - var ns = ss + ((modifier > 0) ? options.tabString.length : (modifier < 0) ? -options.tabString.length : 0); - var ne = es + modifier; - o.setSelectionRange(ns,ne); - } - } - - function ie_tab (o, shft, options) { - var range = document.selection.createRange(); - - if (o == range.parentElement()) { - // when there's no selection and we're just working with the caret, we'll add/remove the tabs at the caret, providing more control - if ('' == range.text) { - // SHIFT+TAB - if (shft) { - var bookmark = range.getBookmark(); - //first try to the left by moving opening up our empty range to the left - range.moveStart('character', -options.tabString.length); - if (options.tabString == range.text) { - range.text = ''; - } else { - // if that didn't work then reset the range and try opening it to the right - range.moveToBookmark(bookmark); - range.moveEnd('character', options.tabString.length); - if (options.tabString == range.text) - range.text = ''; - } - // move the pointer to the start of them empty range and select it - range.collapse(true); - range.select(); - } - - else { - // very simple here. just insert the tab into the range and put the pointer at the end - range.text = options.tabString; - range.collapse(false); - range.select(); - } - } - // selections will always add/remove tabs from the start of the line - else { - - var selection_text = range.text; - var selection_len = selection_text.length; - var selection_arr = selection_text.split("\r\n"); - - var before_range = document.body.createTextRange(); - before_range.moveToElementText(o); - before_range.setEndPoint("EndToStart", range); - var before_text = before_range.text; - var before_arr = before_text.split("\r\n"); - var before_len = before_text.length; // - before_arr.length + 1; - - var after_range = document.body.createTextRange(); - after_range.moveToElementText(o); - after_range.setEndPoint("StartToEnd", range); - var after_text = after_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n - - var end_range = document.body.createTextRange(); - end_range.moveToElementText(o); - end_range.setEndPoint("StartToEnd", before_range); - var end_text = end_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n - - var check_html = $(o).html(); - $("#r3").text(before_len + " + " + selection_len + " + " + after_text.length + " = " + check_html.length); - if((before_len + end_text.length) < check_html.length) { - before_arr.push(""); - before_len += 2; // for the \r\n that was trimmed - if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) - selection_arr[0] = selection_arr[0].substring(options.tabString.length); - else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; - } else { - if (shft && options.tabString == before_arr[before_arr.length-1].substring(0,options.tabString.length)) - before_arr[before_arr.length-1] = before_arr[before_arr.length-1].substring(options.tabString.length); - else if (!shft) before_arr[before_arr.length-1] = options.tabString + before_arr[before_arr.length-1]; - } - - for (var i = 1; i < selection_arr.length; i++) { - if (shft && options.tabString == selection_arr[i].substring(0,options.tabString.length)) - selection_arr[i] = selection_arr[i].substring(options.tabString.length); - else if (!shft) selection_arr[i] = options.tabString + selection_arr[i]; - } - - if (1 == before_arr.length && 0 == before_len) { - if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) - selection_arr[0] = selection_arr[0].substring(options.tabString.length); - else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; - } - - if ((before_len + selection_len + after_text.length) < check_html.length) { - selection_arr.push(""); - selection_len += 2; // for the \r\n that was trimmed - } - - before_range.text = before_arr.join("\r\n"); - range.text = selection_arr.join("\r\n"); - - var new_range = document.body.createTextRange(); - new_range.moveToElementText(o); - - if (0 < before_len) new_range.setEndPoint("StartToEnd", before_range); - else new_range.setEndPoint("StartToStart", before_range); - new_range.setEndPoint("EndToEnd", range); - - new_range.select(); - - } - } - } - -// end of closure -})(jQuery); diff --git a/.htaccess b/v1-v2/.htaccess similarity index 100% rename from .htaccess rename to v1-v2/.htaccess diff --git a/v1-v2/Python3-porting.txt b/v1-v2/Python3-porting.txt new file mode 100644 index 000000000..dca80e0fa --- /dev/null +++ b/v1-v2/Python3-porting.txt @@ -0,0 +1,101 @@ +See cgi-bin/p4_encoder.py for some proposed changes + +John DeNero's comments on 2012-07-23 +''' +Distinguishing whether +some x is a class or not in Python 3 should be performed via: + +isinstance(x, type) + +I don't think any sort of hack or repr comparison is required. +''' + + +Notes from Peter Wentworth about porting to Python 3 +''' +Hi Philip - a bug in the code I sent you [NB, see: python3_viz.zip]! I +really kludged how I tested for classes vs instances in the file +p3_encoder that I sent you. At line 77 of that file, I used str(dat) +to convert the object to a string, and then did some hackish substring +searching. But if the user provides a __str__ method in the class, it +gets called instead, leading to trouble. + +My quick hack was to change the str(dat) call to repr(dat) (which won't +dispatch to user-written methods), but it doesn't solve the key issue +that I have not taken proper care to cleanly categorize +types/objects/classes in Python 3. + +Peter + +-----Original Message----- +From: George Wells +Sent: 21 September 2011 03:47 PM +To: Peter Wentworth +Subject: Python visualiser + +Hi Peter + +I just tried a simple example of a class in the visualiser and it is +generating an error for some reason (the code runs fine in the +interpreter). It was working fine until I added the second method +(__str__). + +The code is: + +-----8<----- +class Point: + def __init__ (self, x=0, y=0): + self.x=x + self.y=y + def __str__ (self): + return '({0}, {1})'.format(self.x, self.y) + +pt=Point(3,4) +print(pt) +-----8<----- + +Cheers, +George. +''' + +''' +Hi Philip + +And my last bug report was even sloppy. I use str(dat) at three +different places in that file, so it needs to be refactored a little +before changing the str() to repr() +''' + +Regarding how to port to Python 3 ... +''' +HI Philip + +I don't have anything to recommend. My experience is that there are +very few (end-user) things that are quite widely talked about in various +forums. Key ones for me is that print is now a function; range is +inherently lazy (like P2 xrange used to be), strings are no longer +ascii – they are all Unicode, input takes on the semantics of P2 +rawinput, and some methods to iterate over dictionaries are different. + +In the context of the visualizer, changing Python 2 to Python 3 wasn't +particularly complicated, except for the class/instance hurdle. P3 has +a more unified class-based type system, immediately evident if you ask +type(123) -- it now returns . Classes are themselves +instances of some MetaClass, with a thing called 'type' at the top of +the hierarchy. ('type' is an instance of 'type') So there isn't +really an easy end-user way to ask "is this a class or an instance?" – +it is both at the same time! There is some library that can expose +detailed internal attributes of things, but I chose not to use that. +Rather, if you ask for repr(obj) it turns it into some external string +that always has the word 'instance' in it for instances! So I got repr +to do the internal inspection and I made the decision with some string +matching. + +One of the more interesting new features in Python 3 is a function +annotation mechanism. The compiler ignores annotations. The idea +seems to be "lets allow annotations and see what creative things the +third-party tools do with them". See +http://www.python.org/dev/peps/pep-3107/ where they use annotations for +type signatures etc. +''' + diff --git a/v1-v2/README b/v1-v2/README new file mode 100644 index 000000000..8726a706f --- /dev/null +++ b/v1-v2/README @@ -0,0 +1,148 @@ +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +====== +This directory contains the contents of Versions 1 and 2: + +Version 1 - Released on January 19, 2010 +Version 2 - Released on October 4, 2011 + +====== +Introduction: + +The Online Python Tutor is a web application where you can type Python +scripts directly into your web browser, execute those scripts, and +single-step FORWARDS AND BACKWARDS through execution in order to view +the run-time state of all data structures. + +Using this tool, teachers and students can write small Python code +snippets together and see what happens to the data structures when the +code gets executed. + +Try it out live at: http://www.onlinepythontutor.com/ + +====== +System architecture overview: + +The Online Python Tutor is implemented as a web application, with a +JavaScript front-end making AJAX calls to a pure-Python back-end. + +The back-end has been tested on an Apache server running Python 2.6 +through CGI. Note that it will probably fail in subtle ways on other +Python 2.X (and will DEFINITELY fail on Python 3.X). Peter Wentworth +has create a port to Python 3.X, and hopefully we can eventually +integrate his code into my repository. + + +The front-end is HTML/JavaScript (using the jQuery library). It's +responsible for the input text box, submitting the Python code (as +plaintext) to the back-end, receiving an execution trace from the +back-end, and then rendering that trace as data structure +visualizations. The front-end code resides in these files in the +current directory: + + tutor.html + question.html + edu-python.js + edu-python-tutor.js + edu-python-questions.js + edu-python.css + jquery.textarea.js + .htaccess - to increase the size of allowed Apache HTTP responses + + (there are also other 3rd-party JavaScript library files) + +Note on .htaccess: If your server limits the size of responses received +from HTTP requests, then you might need to use the following .htaccess +file included in your top-level (front-end) directory, to allow the +Online Python Tutor to receive traces from the back-end: + + + +# Set a ~2MB limit for response headers (bigger than default 512K limit) +SecResponseBodyLimit 2000000 + + + + +The back-end is a server-side CGI application that takes Python script +source code as input, executes the entire script (up to 200 executed +lines, to prevent infinite loops), and collects a full trace of all +variable values (i.e., data structures) after each line has been +executed. It then sends that full trace to the front-end in a +specially-encoded JSON format. The front-end then parses and visualizes +that trace and allows the user to single-step forwards AND backwards +through execution. + +The back-end resides in the cgi-bin/ sub-directory in this repository: + + cgi-bin/web_exec.py - the CGI entrance point to the back-end + cgi-bin/web_run_test.py - the CGI entrance point to the question + grading back-end + cgi-bin/pg_logger.py - the 'meat' of the back-end + cgi-bin/pg_encoder.py - encodes Python data into JSON + cgi-bin/create_db.py - for optional sqlite query logging + cgi-bin/db_common.py - for optional sqlite query logging + cgi-bin/.htaccess - for Apache CGI execute permissions + + +Due to the AJAX same-origin policy, the front-end and back-end must be +deployed on the same server (unless you do some fancy proxy magic). + + +====== +Original founding vision (from January 2010): + +I want to create a web-based interactive learning platform for students +to explore programming. I envision an HTML UI where a student can enter +in code and then single-step through it and see how the data structures +change during execution. + +Key insight: I realized that for the small programs that teachers and +students write for educational purposes, it's possible to simply LOG +everything that happens to data structures during execution. Then we +can simply play back that log in the front-end, which allows +single-stepping forwards and also BACKWARDS. + +After all, we don't need students to be able to interactive probe and +make changes in the middle of execution, which is the only value-added +of a REAL debugger. + +What kinds of things do we want to log? + + On the execution of each line, log: + - the line number just executed + - all data created by the program + + Also log calls and returns of a student's function + (but NOT library functions) + +We can use the Python JSON module to encode data structures in JSON and +send it to the client's web browser + +The PDB debugger (Lib/pdb.py) is written in pure Python: + http://docs.python.org/library/pdb.html + - the bdb debugger framework is the C module that pdb calls + http://docs.python.org/library/bdb.html + diff --git a/TODO b/v1-v2/TODO similarity index 100% rename from TODO rename to v1-v2/TODO diff --git a/alias-screenshot.png b/v1-v2/alias-screenshot.png similarity index 100% rename from alias-screenshot.png rename to v1-v2/alias-screenshot.png diff --git a/cgi-bin/.htaccess b/v1-v2/cgi-bin/.htaccess similarity index 100% rename from cgi-bin/.htaccess rename to v1-v2/cgi-bin/.htaccess diff --git a/cgi-bin/create_db.py b/v1-v2/cgi-bin/create_db.py similarity index 100% rename from cgi-bin/create_db.py rename to v1-v2/cgi-bin/create_db.py diff --git a/cgi-bin/db_common.py b/v1-v2/cgi-bin/db_common.py similarity index 100% rename from cgi-bin/db_common.py rename to v1-v2/cgi-bin/db_common.py diff --git a/cgi-bin/index.html b/v1-v2/cgi-bin/index.html similarity index 100% rename from cgi-bin/index.html rename to v1-v2/cgi-bin/index.html diff --git a/v1-v2/cgi-bin/load_question.py b/v1-v2/cgi-bin/load_question.py new file mode 100755 index 000000000..14d6522f8 --- /dev/null +++ b/v1-v2/cgi-bin/load_question.py @@ -0,0 +1,46 @@ +#!/usr/bin/python2.6 + +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# Load a question file in the 'questions/' sub-directory, parse it, +# and return it to the caller in JSON format +QUESTIONS_DIR = '../questions/' + +from parse_questions import parseQuestionsFile + +import cgi, os, json + +form = cgi.FieldStorage() +question_file = form['question_file'].value + +fn = QUESTIONS_DIR + question_file + '.txt' +assert os.path.isfile(fn) + + +# Crucial first line to make sure that Apache serves this data +# correctly - DON'T FORGET THE EXTRA NEWLINES!!!: +print "Content-type: text/plain; charset=iso-8859-1\n\n" +print json.dumps(parseQuestionsFile(fn)) diff --git a/v1-v2/cgi-bin/p4_encoder.py b/v1-v2/cgi-bin/p4_encoder.py new file mode 100755 index 000000000..4c28ac3de --- /dev/null +++ b/v1-v2/cgi-bin/p4_encoder.py @@ -0,0 +1,192 @@ +#!/usr/bin/python3 -u + +# Python 3 version of encoder by David Pritchard, built upon work by Peter Wentworth +# (diff with pg_encoder.py, which is for Python 2) + + +# given an arbitrary piece of Python data, encode it in such a manner +# that it can be later encoded into JSON. +# http://json.org/ +# +# Format: +# * None, int, float, str, bool - unchanged (long is removed in Python 3) +# (json.dumps encodes these fine verbatim) +# * list - ['LIST', unique_id, elt1, elt2, elt3, ..., eltN] +# * tuple - ['TUPLE', unique_id, elt1, elt2, elt3, ..., eltN] +# * set - ['SET', unique_id, elt1, elt2, elt3, ..., eltN] +# * dict - ['DICT', unique_id, [key1, value1], [key2, value2], ..., [keyN, valueN]] +# * instance - ['INSTANCE', class name, unique_id, [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * class - ['CLASS', class name, unique_id, [list of superclass names], [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * circular reference - ['CIRCULAR_REF', unique_id] +# * other - [, unique_id, string representation of object] +# +# +# the unique_id is derived from id(), which allows us to explicitly +# capture aliasing of compound values + +# Key: real ID from id() +# Value: a small integer for greater readability, set by cur_small_id +real_to_small_IDs = {} +cur_small_id = 1 + +import re, types +#typeRE = re.compile("") # not used in Python 3 +classRE = re.compile("") +functionRE = re.compile("") # new case for Python 3 + +# When we find a and x is in this list, don't confuse the beginner by listing the inner details +native_types = ['int', 'float', 'str', 'tuple', 'list', 'set', 'dict', 'bool', 'NoneType', 'bytes', 'type', 'object'] + +def encode(dat, ignore_id=False): + + def append_attributes(ret, new_compound_obj_ids, dict): + """ Put attributes onto ret. """ + # traverse the __dict__ to grab attributes + # (filter out useless-seeming ones): + + user_attrs = sorted([e for e in dict.keys() + if e not in {'__doc__', '__module__', '__return__', '__locals__', + '__weakref__', '__dict__'} + ]) + for attr in user_attrs: + foo = [encode_helper(attr, new_compound_obj_ids), + encode_helper(dict[attr], new_compound_obj_ids)] + ret.append(foo) + + def encode_helper(dat, compound_obj_ids): + # primitive type + if dat is None or type(dat) in (int, float, str, bool): + return dat + # compound type + else: + my_id = id(dat) + + global cur_small_id + if my_id not in real_to_small_IDs: + if ignore_id: + real_to_small_IDs[my_id] = 99999 + else: + real_to_small_IDs[my_id] = cur_small_id + cur_small_id += 1 + + if my_id in compound_obj_ids: + return ['CIRCULAR_REF', real_to_small_IDs[my_id]] + + new_compound_obj_ids = compound_obj_ids.union([my_id]) + + typ = type(dat) + obj_as_string = object.__repr__(dat) + + my_small_id = real_to_small_IDs[my_id] + + if typ == list: + ret = ['LIST', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == tuple: + ret = ['TUPLE', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == set: + ret = ['SET', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == dict: + ret = ['DICT', my_small_id] + append_attributes(ret, new_compound_obj_ids, dat) + + elif typ == type: # its a class. What a mess they made of it! + superclass_names = [e.__name__ for e in dat.__bases__] + ret = ['CLASS', dat.__name__, my_small_id, superclass_names] + if dat.__name__ not in native_types: + if hasattr(dat, '__dict__'): + append_attributes(ret, new_compound_obj_ids, dat.__dict__) + + elif repr(typ)[:6] == "= 0: # is it an instance? + ret = ['INSTANCE', dat.__class__.__name__, my_small_id] + if hasattr(dat, '__dict__'): + append_attributes(ret, new_compound_obj_ids, dat.__dict__) + + else: + typeStr = repr(typ) + m = classRE.match(typeStr) + assert m, typ + ret = [m.group(1), my_small_id , obj_as_string] + + return ret + + return encode_helper(dat, set()) + + +if __name__ == '__main__': + + def test(actual, expected=0): + """ Compare the actual to the expected value, and print a suitable message. """ + import sys + linenum = sys._getframe(1).f_lineno # get the caller's line number. + if (expected == actual): + msg = "Test on line %s passed." % (linenum) + else: + msg = "Test on line %s failed. Expected '%s', but got '%s'." % (linenum, expected, actual) + print(msg) + + class P(): + p_attr1 = 123 + def p_method(self, x): + return 2*x + + class Q(P): + pass + + p1 = P() + q1 = Q() + + addr = 1 + + test(encode("hello"),"hello") + test(encode(123),123) + test(encode(123.45),123.45) + test(encode(132432134423143132432134423143),132432134423143132432134423143) + test(encode(False),False) + test(encode(None),None) + + + test(encode((1,2)), ['TUPLE', addr, 1, 2]) + + addr += 1 + test(encode([1,2]), ['LIST', addr, 1, 2]) + + addr += 1 + test(encode({1:'mon'}), ['DICT', addr, [1, 'mon']]) + + addr += 1 + test(encode(test), ['function', addr, 'test']) + + addr += 1 + test(encode(P), ['CLASS', 'P', addr, ['object'], ['p_attr1', 123], ['p_method', ['function', addr+1, 'p_method']]]) + + addr += 2 + test(encode(Q), ['CLASS', 'Q', addr, ['P']]) + + addr += 1 + test(encode(p1), ['INSTANCE', 'P', addr]) + + addr += 1 + test(encode(q1), ['INSTANCE', 'Q', addr]) + + addr += 1 + test(encode(min), ['builtin_function_or_method', addr, ''] ) + + addr += 1 + test(encode(range(1,3)), ['range', addr, 'range(1, 3)']) + + addr += 1 + test(encode({1,2}), ['SET', addr, 1, 2]) + + addr += 1 + p = [1,2,3] + p.append(p) # make a circular reference + + test(encode(p), ['LIST', addr, 1, 2, 3, ['CIRCULAR_REF', addr]]) + +# Need some new tests for z = type(123) + + + print(encode({"stdout": "", "func_name": "", "globals": {"sum": 0, "friends": ["LIST", 1, "Joe", "Bill"], "length": 3, "f": "Joe"}, "stack_locals": [], "line": 7, "event": "step_line"})) diff --git a/cgi-bin/parse_questions.py b/v1-v2/cgi-bin/parse_questions.py similarity index 65% rename from cgi-bin/parse_questions.py rename to v1-v2/cgi-bin/parse_questions.py index 5a3935f19..392ab43ae 100644 --- a/cgi-bin/parse_questions.py +++ b/v1-v2/cgi-bin/parse_questions.py @@ -1,19 +1,27 @@ # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + # Defines a function that parses an Online Python Tutor 'questions file' # into a dict, which can easily be converted into JSON diff --git a/cgi-bin/pg_encoder.py b/v1-v2/cgi-bin/pg_encoder.py similarity index 77% rename from cgi-bin/pg_encoder.py rename to v1-v2/cgi-bin/pg_encoder.py index 2de1f97eb..01618dfe3 100644 --- a/cgi-bin/pg_encoder.py +++ b/v1-v2/cgi-bin/pg_encoder.py @@ -1,19 +1,26 @@ # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Given an arbitrary piece of Python data, encode it in such a manner diff --git a/cgi-bin/pg_logger.py b/v1-v2/cgi-bin/pg_logger.py similarity index 89% rename from cgi-bin/pg_logger.py rename to v1-v2/cgi-bin/pg_logger.py index 6c948af52..673c3dbf6 100644 --- a/cgi-bin/pg_logger.py +++ b/v1-v2/cgi-bin/pg_logger.py @@ -1,19 +1,26 @@ # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # This is the meat of the Online Python Tutor back-end. It implements a @@ -21,7 +28,7 @@ # Python debugger imported via the bdb module), printing out the values # of all in-scope data structures after each executed instruction. -# Note that I've only tested this logger on Python 2.5, so it will +# Note that I've only tested this logger on Python 2.6, so it will # probably fail in subtle ways on other Python 2.X (and will DEFINITELY # fail on Python 3.X). diff --git a/cgi-bin/run_tests.py b/v1-v2/cgi-bin/run_tests.py similarity index 78% rename from cgi-bin/run_tests.py rename to v1-v2/cgi-bin/run_tests.py index 550815736..221bea85e 100644 --- a/cgi-bin/run_tests.py +++ b/v1-v2/cgi-bin/run_tests.py @@ -1,19 +1,26 @@ # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Regression tests for Online Python Tutor back-end @@ -23,7 +30,6 @@ import os, sys, re, shutil, filecmp, optparse, difflib import pg_logger -import demjson # all tests are found in this directory: @@ -35,7 +41,7 @@ def execute(test_script): def my_finalizer(output_lst): outfile = open(test_script[:-3] + '.out', 'w') - output_json = demjson.encode(output_lst, compactly=False) + output_json = json.dumps(output_lst) print >> outfile, output_json pg_logger.exec_script_str(open(test_script).read(), my_finalizer, True) diff --git a/cgi-bin/web_exec.py b/v1-v2/cgi-bin/web_exec.py similarity index 64% rename from cgi-bin/web_exec.py rename to v1-v2/cgi-bin/web_exec.py index 4df13f30c..9debc60ec 100755 --- a/cgi-bin/web_exec.py +++ b/v1-v2/cgi-bin/web_exec.py @@ -1,21 +1,28 @@ -#!/usr/bin/python2.5 +#!/usr/bin/python2.6 # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Executes the Online Python Tutor back-end as a CGI script, which @@ -24,8 +31,8 @@ # # Returns a complete JSON execution trace to the front-end. # -# This version uses Python 2.5 on the MIT CSAIL servers. -# (note that Python 2.4 doesn't work on CSAIL, but Python 2.5 does) +# This version uses Python 2.6 on the MIT CSAIL servers. +# (note that Python 2.4 doesn't work on CSAIL, but Python 2.6 does) # # If you want to run this script, then you'll need to change the # shebang line at the top of this file to point to your system's Python. @@ -43,9 +50,7 @@ import cgi import pg_logger -# Python 2.5 doesn't have a built-in json module, so I'm using a -# 3rd-party module. I think you can do 'import json' in Python >= 2.6 -import demjson +import json if LOG_QUERIES: import os, time, db_common @@ -53,7 +58,7 @@ def web_finalizer(output_lst): # use compactly=False to produce human-readable JSON, # except at the expense of being a LARGER download - output_json = demjson.encode(output_lst, compactly=True) + output_json = json.dumps(output_lst) # query logging is optional if LOG_QUERIES: diff --git a/cgi-bin/web_run_test.py b/v1-v2/cgi-bin/web_run_test.py similarity index 77% rename from cgi-bin/web_run_test.py rename to v1-v2/cgi-bin/web_run_test.py index c0ae45605..abe4592a6 100755 --- a/cgi-bin/web_run_test.py +++ b/v1-v2/cgi-bin/web_run_test.py @@ -1,21 +1,28 @@ -#!/usr/bin/python2.5 +#!/usr/bin/python2.6 # Online Python Tutor -# Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) # https://github.com/pgbovine/OnlinePythonTutor/ # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Runs both 'user_script' and 'expect_script' and returns whether the @@ -26,9 +33,7 @@ import cgi import pg_logger -# Python 2.5 doesn't have a built-in json module, so I'm using a -# 3rd-party module. I think you can do 'import json' in Python >= 2.6 -import demjson +import json user_trace = None # the FULL user trace (without any IDs, though) expect_trace_final_entry = None @@ -60,7 +65,7 @@ def expect_script_finalizer(output_lst): # Crucial first line to make sure that Apache serves this data # correctly - DON'T FORGET THE EXTRA NEWLINES!!!: print "Content-type: text/plain; charset=iso-8859-1\n\n" - output_json = demjson.encode(ret, compactly=True) + output_json = json.dumps(ret) print output_json else: @@ -122,7 +127,7 @@ def really_finalize(): # Crucial first line to make sure that Apache serves this data # correctly - DON'T FORGET THE EXTRA NEWLINES!!!: print "Content-type: text/plain; charset=iso-8859-1\n\n" - output_json = demjson.encode(ret, compactly=True) + output_json = json.dumps(ret) print output_json diff --git a/edu-python-questions.js b/v1-v2/edu-python-questions.js similarity index 90% rename from edu-python-questions.js rename to v1-v2/edu-python-questions.js index dab19bd6d..7c1933a21 100644 --- a/edu-python-questions.js +++ b/v1-v2/edu-python-questions.js @@ -1,21 +1,28 @@ /* Online Python Tutor -Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -You should have received a copy of the GNU General Public License -along with this program. If not, see . +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ @@ -52,8 +59,9 @@ function resetTestResults() { $(document).ready(function() { eduPythonCommonInit(); // must call this first! - $("#actualCodeInput").tabby(); // recognize TAB and SHIFT-TAB - $("#testCodeInput").tabby(); // recognize TAB and SHIFT-TAB + // this doesn't work since we need jquery.textarea.js ... + //$("#actualCodeInput").tabby(); // recognize TAB and SHIFT-TAB + //$("#testCodeInput").tabby(); // recognize TAB and SHIFT-TAB // be friendly to the browser's forward and back buttons diff --git a/edu-python-title.css b/v1-v2/edu-python-title.css similarity index 61% rename from edu-python-title.css rename to v1-v2/edu-python-title.css index 55cb13448..9081041b8 100644 --- a/edu-python-title.css +++ b/v1-v2/edu-python-title.css @@ -1,21 +1,28 @@ /* Online Python Tutor -Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/edu-python-tutor.js b/v1-v2/edu-python-tutor.js similarity index 82% rename from edu-python-tutor.js rename to v1-v2/edu-python-tutor.js index 7905c3d57..7793f7818 100644 --- a/edu-python-tutor.js +++ b/v1-v2/edu-python-tutor.js @@ -1,21 +1,28 @@ /* Online Python Tutor -Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -You should have received a copy of the GNU General Public License -along with this program. If not, see . +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ @@ -40,7 +47,8 @@ function enterVisualizeMode(traceData) { $(document).ready(function() { eduPythonCommonInit(); // must call this first! - $("#pyInput").tabby(); // recognize TAB and SHIFT-TAB + // this doesn't work since we need jquery.textarea.js ... + //$("#pyInput").tabby(); // recognize TAB and SHIFT-TAB // be friendly to the browser's forward and back buttons diff --git a/edu-python.css b/v1-v2/edu-python.css similarity index 90% rename from edu-python.css rename to v1-v2/edu-python.css index 5124fdf52..21d2ea64f 100644 --- a/edu-python.css +++ b/v1-v2/edu-python.css @@ -1,21 +1,28 @@ /* Online Python Tutor -Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/edu-python.js b/v1-v2/edu-python.js similarity index 97% rename from edu-python.js rename to v1-v2/edu-python.js index ee837e864..c5e2edaec 100644 --- a/edu-python.js +++ b/v1-v2/edu-python.js @@ -1,21 +1,28 @@ /* Online Python Tutor -Copyright (C) 2010-2011 Philip J. Guo (philip@pgbovine.net) https://github.com/pgbovine/OnlinePythonTutor/ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/v1-v2/example-code b/v1-v2/example-code new file mode 120000 index 000000000..c24e6a160 --- /dev/null +++ b/v1-v2/example-code @@ -0,0 +1 @@ +../v3/example-code \ No newline at end of file diff --git a/grading-375.png b/v1-v2/grading-375.png similarity index 100% rename from grading-375.png rename to v1-v2/grading-375.png diff --git a/hunt-mcilroy.js b/v1-v2/hunt-mcilroy.js similarity index 100% rename from hunt-mcilroy.js rename to v1-v2/hunt-mcilroy.js diff --git a/index.html b/v1-v2/index.html similarity index 81% rename from index.html rename to v1-v2/index.html index c7694a825..4952d4d48 100644 --- a/index.html +++ b/v1-v2/index.html @@ -4,21 +4,28 @@ @@ -201,7 +208,7 @@

new practice problems in plain text format

diff --git a/jquery-1.3.2.min.js b/v1-v2/jquery-1.3.2.min.js similarity index 100% rename from jquery-1.3.2.min.js rename to v1-v2/jquery-1.3.2.min.js diff --git a/jquery.autogrow.js b/v1-v2/jquery.autogrow.js similarity index 100% rename from jquery.autogrow.js rename to v1-v2/jquery.autogrow.js diff --git a/jquery.ba-bbq.min.js b/v1-v2/jquery.ba-bbq.min.js similarity index 100% rename from jquery.ba-bbq.min.js rename to v1-v2/jquery.ba-bbq.min.js diff --git a/jquery.corner.js b/v1-v2/jquery.corner.js similarity index 100% rename from jquery.corner.js rename to v1-v2/jquery.corner.js diff --git a/jquery.jsPlumb-1.3.3-all-min.js b/v1-v2/jquery.jsPlumb-1.3.3-all-min.js similarity index 100% rename from jquery.jsPlumb-1.3.3-all-min.js rename to v1-v2/jquery.jsPlumb-1.3.3-all-min.js diff --git a/jquery.min.js b/v1-v2/jquery.min.js similarity index 100% rename from jquery.min.js rename to v1-v2/jquery.min.js diff --git a/jsplumb-test.js b/v1-v2/jsplumb-test.js similarity index 100% rename from jsplumb-test.js rename to v1-v2/jsplumb-test.js diff --git a/mock-data.js b/v1-v2/mock-data.js similarity index 100% rename from mock-data.js rename to v1-v2/mock-data.js diff --git a/question.html b/v1-v2/question.html similarity index 78% rename from question.html rename to v1-v2/question.html index 6ea6ea4d2..a60214513 100644 --- a/question.html +++ b/v1-v2/question.html @@ -4,21 +4,28 @@ @@ -40,8 +47,6 @@ - - @@ -195,7 +200,7 @@

This application supports the core Python 2.5 language, with no +href="http://docs.python.org/release/2.6/">Python 2.6 language, with no module imports or file I/O. It's meant to be used as a platform for creating programming tutorials, not for running or debugging production code. @@ -206,7 +211,7 @@ repository and send bug reports, feedback, and suggestions to philip@pgbovine.net

-Copyright © 2010-2011 Philip Guo. All rights reserved. +Copyright © 2010-2012 Philip Guo. All rights reserved. diff --git a/questions/debug-bsearch.txt b/v1-v2/questions/debug-bsearch.txt similarity index 100% rename from questions/debug-bsearch.txt rename to v1-v2/questions/debug-bsearch.txt diff --git a/questions/debug-ireverse.txt b/v1-v2/questions/debug-ireverse.txt similarity index 100% rename from questions/debug-ireverse.txt rename to v1-v2/questions/debug-ireverse.txt diff --git a/questions/debug-mergesort.txt b/v1-v2/questions/debug-mergesort.txt similarity index 100% rename from questions/debug-mergesort.txt rename to v1-v2/questions/debug-mergesort.txt diff --git a/questions/optimize-find-dups.txt b/v1-v2/questions/optimize-find-dups.txt similarity index 100% rename from questions/optimize-find-dups.txt rename to v1-v2/questions/optimize-find-dups.txt diff --git a/questions/optimize-search.txt b/v1-v2/questions/optimize-search.txt similarity index 100% rename from questions/optimize-search.txt rename to v1-v2/questions/optimize-search.txt diff --git a/questions/optimize-sum.txt b/v1-v2/questions/optimize-sum.txt similarity index 100% rename from questions/optimize-sum.txt rename to v1-v2/questions/optimize-sum.txt diff --git a/questions/remove-dups.txt b/v1-v2/questions/remove-dups.txt similarity index 100% rename from questions/remove-dups.txt rename to v1-v2/questions/remove-dups.txt diff --git a/questions/reverse.txt b/v1-v2/questions/reverse.txt similarity index 100% rename from questions/reverse.txt rename to v1-v2/questions/reverse.txt diff --git a/questions/two-sum.txt b/v1-v2/questions/two-sum.txt similarity index 100% rename from questions/two-sum.txt rename to v1-v2/questions/two-sum.txt diff --git a/red-sad-face.jpg b/v1-v2/red-sad-face.jpg similarity index 100% rename from red-sad-face.jpg rename to v1-v2/red-sad-face.jpg diff --git a/test-programs/caught_exception_1.golden b/v1-v2/test-programs/caught_exception_1.golden similarity index 100% rename from test-programs/caught_exception_1.golden rename to v1-v2/test-programs/caught_exception_1.golden diff --git a/test-programs/caught_exception_1.py b/v1-v2/test-programs/caught_exception_1.py similarity index 100% rename from test-programs/caught_exception_1.py rename to v1-v2/test-programs/caught_exception_1.py diff --git a/test-programs/caught_exception_2.golden b/v1-v2/test-programs/caught_exception_2.golden similarity index 100% rename from test-programs/caught_exception_2.golden rename to v1-v2/test-programs/caught_exception_2.golden diff --git a/test-programs/caught_exception_2.py b/v1-v2/test-programs/caught_exception_2.py similarity index 100% rename from test-programs/caught_exception_2.py rename to v1-v2/test-programs/caught_exception_2.py diff --git a/test-programs/circ_ref.golden b/v1-v2/test-programs/circ_ref.golden similarity index 100% rename from test-programs/circ_ref.golden rename to v1-v2/test-programs/circ_ref.golden diff --git a/test-programs/circ_ref.py b/v1-v2/test-programs/circ_ref.py similarity index 100% rename from test-programs/circ_ref.py rename to v1-v2/test-programs/circ_ref.py diff --git a/test-programs/circ_ref_2.golden b/v1-v2/test-programs/circ_ref_2.golden similarity index 100% rename from test-programs/circ_ref_2.golden rename to v1-v2/test-programs/circ_ref_2.golden diff --git a/test-programs/circ_ref_2.py b/v1-v2/test-programs/circ_ref_2.py similarity index 100% rename from test-programs/circ_ref_2.py rename to v1-v2/test-programs/circ_ref_2.py diff --git a/test-programs/circ_ref_fake.golden b/v1-v2/test-programs/circ_ref_fake.golden similarity index 100% rename from test-programs/circ_ref_fake.golden rename to v1-v2/test-programs/circ_ref_fake.golden diff --git a/test-programs/circ_ref_fake.py b/v1-v2/test-programs/circ_ref_fake.py similarity index 100% rename from test-programs/circ_ref_fake.py rename to v1-v2/test-programs/circ_ref_fake.py diff --git a/test-programs/class_test.golden b/v1-v2/test-programs/class_test.golden similarity index 100% rename from test-programs/class_test.golden rename to v1-v2/test-programs/class_test.golden diff --git a/test-programs/class_test.py b/v1-v2/test-programs/class_test.py similarity index 100% rename from test-programs/class_test.py rename to v1-v2/test-programs/class_test.py diff --git a/test-programs/class_test_2.golden b/v1-v2/test-programs/class_test_2.golden similarity index 100% rename from test-programs/class_test_2.golden rename to v1-v2/test-programs/class_test_2.golden diff --git a/test-programs/class_test_2.py b/v1-v2/test-programs/class_test_2.py similarity index 100% rename from test-programs/class_test_2.py rename to v1-v2/test-programs/class_test_2.py diff --git a/test-programs/class_test_3.golden b/v1-v2/test-programs/class_test_3.golden similarity index 100% rename from test-programs/class_test_3.golden rename to v1-v2/test-programs/class_test_3.golden diff --git a/test-programs/class_test_3.py b/v1-v2/test-programs/class_test_3.py similarity index 100% rename from test-programs/class_test_3.py rename to v1-v2/test-programs/class_test_3.py diff --git a/test-programs/data_test.golden b/v1-v2/test-programs/data_test.golden similarity index 100% rename from test-programs/data_test.golden rename to v1-v2/test-programs/data_test.golden diff --git a/test-programs/data_test.py b/v1-v2/test-programs/data_test.py similarity index 100% rename from test-programs/data_test.py rename to v1-v2/test-programs/data_test.py diff --git a/test-programs/dict_error.golden b/v1-v2/test-programs/dict_error.golden similarity index 100% rename from test-programs/dict_error.golden rename to v1-v2/test-programs/dict_error.golden diff --git a/test-programs/dict_error.py b/v1-v2/test-programs/dict_error.py similarity index 100% rename from test-programs/dict_error.py rename to v1-v2/test-programs/dict_error.py diff --git a/test-programs/dict_test.golden b/v1-v2/test-programs/dict_test.golden similarity index 100% rename from test-programs/dict_test.golden rename to v1-v2/test-programs/dict_test.golden diff --git a/test-programs/dict_test.py b/v1-v2/test-programs/dict_test.py similarity index 100% rename from test-programs/dict_test.py rename to v1-v2/test-programs/dict_test.py diff --git a/test-programs/exec_test.golden b/v1-v2/test-programs/exec_test.golden similarity index 100% rename from test-programs/exec_test.golden rename to v1-v2/test-programs/exec_test.golden diff --git a/test-programs/exec_test.py b/v1-v2/test-programs/exec_test.py similarity index 100% rename from test-programs/exec_test.py rename to v1-v2/test-programs/exec_test.py diff --git a/test-programs/func_exception.golden b/v1-v2/test-programs/func_exception.golden similarity index 100% rename from test-programs/func_exception.golden rename to v1-v2/test-programs/func_exception.golden diff --git a/test-programs/func_exception.py b/v1-v2/test-programs/func_exception.py similarity index 100% rename from test-programs/func_exception.py rename to v1-v2/test-programs/func_exception.py diff --git a/test-programs/generator_test.golden b/v1-v2/test-programs/generator_test.golden similarity index 100% rename from test-programs/generator_test.golden rename to v1-v2/test-programs/generator_test.golden diff --git a/test-programs/generator_test.py b/v1-v2/test-programs/generator_test.py similarity index 100% rename from test-programs/generator_test.py rename to v1-v2/test-programs/generator_test.py diff --git a/test-programs/import_error.golden b/v1-v2/test-programs/import_error.golden similarity index 100% rename from test-programs/import_error.golden rename to v1-v2/test-programs/import_error.golden diff --git a/test-programs/import_error.py b/v1-v2/test-programs/import_error.py similarity index 100% rename from test-programs/import_error.py rename to v1-v2/test-programs/import_error.py diff --git a/test-programs/infinite_loop.golden b/v1-v2/test-programs/infinite_loop.golden similarity index 100% rename from test-programs/infinite_loop.golden rename to v1-v2/test-programs/infinite_loop.golden diff --git a/test-programs/infinite_loop.py b/v1-v2/test-programs/infinite_loop.py similarity index 100% rename from test-programs/infinite_loop.py rename to v1-v2/test-programs/infinite_loop.py diff --git a/test-programs/infinite_loop_one_liner.golden b/v1-v2/test-programs/infinite_loop_one_liner.golden similarity index 100% rename from test-programs/infinite_loop_one_liner.golden rename to v1-v2/test-programs/infinite_loop_one_liner.golden diff --git a/test-programs/infinite_loop_one_liner.py b/v1-v2/test-programs/infinite_loop_one_liner.py similarity index 100% rename from test-programs/infinite_loop_one_liner.py rename to v1-v2/test-programs/infinite_loop_one_liner.py diff --git a/test-programs/lambda_1.golden b/v1-v2/test-programs/lambda_1.golden similarity index 100% rename from test-programs/lambda_1.golden rename to v1-v2/test-programs/lambda_1.golden diff --git a/test-programs/lambda_1.py b/v1-v2/test-programs/lambda_1.py similarity index 100% rename from test-programs/lambda_1.py rename to v1-v2/test-programs/lambda_1.py diff --git a/test-programs/list_dict_test.golden b/v1-v2/test-programs/list_dict_test.golden similarity index 100% rename from test-programs/list_dict_test.golden rename to v1-v2/test-programs/list_dict_test.golden diff --git a/test-programs/list_dict_test.py b/v1-v2/test-programs/list_dict_test.py similarity index 100% rename from test-programs/list_dict_test.py rename to v1-v2/test-programs/list_dict_test.py diff --git a/test-programs/list_test.golden b/v1-v2/test-programs/list_test.golden similarity index 100% rename from test-programs/list_test.golden rename to v1-v2/test-programs/list_test.golden diff --git a/test-programs/list_test.py b/v1-v2/test-programs/list_test.py similarity index 100% rename from test-programs/list_test.py rename to v1-v2/test-programs/list_test.py diff --git a/test-programs/newstyle_class.golden b/v1-v2/test-programs/newstyle_class.golden similarity index 100% rename from test-programs/newstyle_class.golden rename to v1-v2/test-programs/newstyle_class.golden diff --git a/test-programs/newstyle_class.py b/v1-v2/test-programs/newstyle_class.py similarity index 100% rename from test-programs/newstyle_class.py rename to v1-v2/test-programs/newstyle_class.py diff --git a/test-programs/one_func.golden b/v1-v2/test-programs/one_func.golden similarity index 100% rename from test-programs/one_func.golden rename to v1-v2/test-programs/one_func.golden diff --git a/test-programs/one_func.py b/v1-v2/test-programs/one_func.py similarity index 100% rename from test-programs/one_func.py rename to v1-v2/test-programs/one_func.py diff --git a/test-programs/open_error.golden b/v1-v2/test-programs/open_error.golden similarity index 100% rename from test-programs/open_error.golden rename to v1-v2/test-programs/open_error.golden diff --git a/test-programs/open_error.py b/v1-v2/test-programs/open_error.py similarity index 100% rename from test-programs/open_error.py rename to v1-v2/test-programs/open_error.py diff --git a/test-programs/parse_error.golden b/v1-v2/test-programs/parse_error.golden similarity index 100% rename from test-programs/parse_error.golden rename to v1-v2/test-programs/parse_error.golden diff --git a/test-programs/parse_error.py b/v1-v2/test-programs/parse_error.py similarity index 100% rename from test-programs/parse_error.py rename to v1-v2/test-programs/parse_error.py diff --git a/test-programs/parse_error_2.golden b/v1-v2/test-programs/parse_error_2.golden similarity index 100% rename from test-programs/parse_error_2.golden rename to v1-v2/test-programs/parse_error_2.golden diff --git a/test-programs/parse_error_2.py b/v1-v2/test-programs/parse_error_2.py similarity index 100% rename from test-programs/parse_error_2.py rename to v1-v2/test-programs/parse_error_2.py diff --git a/test-programs/parse_error_3.golden b/v1-v2/test-programs/parse_error_3.golden similarity index 100% rename from test-programs/parse_error_3.golden rename to v1-v2/test-programs/parse_error_3.golden diff --git a/test-programs/parse_error_3.py b/v1-v2/test-programs/parse_error_3.py similarity index 100% rename from test-programs/parse_error_3.py rename to v1-v2/test-programs/parse_error_3.py diff --git a/test-programs/print_builtins_error.golden b/v1-v2/test-programs/print_builtins_error.golden similarity index 100% rename from test-programs/print_builtins_error.golden rename to v1-v2/test-programs/print_builtins_error.golden diff --git a/test-programs/print_builtins_error.py b/v1-v2/test-programs/print_builtins_error.py similarity index 100% rename from test-programs/print_builtins_error.py rename to v1-v2/test-programs/print_builtins_error.py diff --git a/test-programs/runtime_error.golden b/v1-v2/test-programs/runtime_error.golden similarity index 100% rename from test-programs/runtime_error.golden rename to v1-v2/test-programs/runtime_error.golden diff --git a/test-programs/runtime_error.py b/v1-v2/test-programs/runtime_error.py similarity index 100% rename from test-programs/runtime_error.py rename to v1-v2/test-programs/runtime_error.py diff --git a/test-programs/set_test.golden b/v1-v2/test-programs/set_test.golden similarity index 100% rename from test-programs/set_test.golden rename to v1-v2/test-programs/set_test.golden diff --git a/test-programs/set_test.py b/v1-v2/test-programs/set_test.py similarity index 100% rename from test-programs/set_test.py rename to v1-v2/test-programs/set_test.py diff --git a/test-programs/simple.golden b/v1-v2/test-programs/simple.golden similarity index 100% rename from test-programs/simple.golden rename to v1-v2/test-programs/simple.golden diff --git a/test-programs/simple.py b/v1-v2/test-programs/simple.py similarity index 100% rename from test-programs/simple.py rename to v1-v2/test-programs/simple.py diff --git a/test-programs/three_lists.golden b/v1-v2/test-programs/three_lists.golden similarity index 100% rename from test-programs/three_lists.golden rename to v1-v2/test-programs/three_lists.golden diff --git a/test-programs/three_lists.py b/v1-v2/test-programs/three_lists.py similarity index 100% rename from test-programs/three_lists.py rename to v1-v2/test-programs/three_lists.py diff --git a/test-programs/tuple_test.golden b/v1-v2/test-programs/tuple_test.golden similarity index 100% rename from test-programs/tuple_test.golden rename to v1-v2/test-programs/tuple_test.golden diff --git a/test-programs/tuple_test.py b/v1-v2/test-programs/tuple_test.py similarity index 100% rename from test-programs/tuple_test.py rename to v1-v2/test-programs/tuple_test.py diff --git a/test-programs/two_funcs.golden b/v1-v2/test-programs/two_funcs.golden similarity index 100% rename from test-programs/two_funcs.golden rename to v1-v2/test-programs/two_funcs.golden diff --git a/test-programs/two_funcs.py b/v1-v2/test-programs/two_funcs.py similarity index 100% rename from test-programs/two_funcs.py rename to v1-v2/test-programs/two_funcs.py diff --git a/tutor.html b/v1-v2/tutor.html similarity index 76% rename from tutor.html rename to v1-v2/tutor.html index eaa8c4913..6a39233d0 100644 --- a/tutor.html +++ b/v1-v2/tutor.html @@ -4,21 +4,28 @@ @@ -45,8 +52,6 @@ - - @@ -109,7 +114,7 @@

-Then try some programming questions:
+Then try some sample programming questions:
Solve: Two-sum | Reverse list | @@ -190,15 +195,15 @@

This application supports the core Python 2.5 language, with no +href="http://docs.python.org/release/2.6/">Python 2.6 language, with no module imports or file I/O. It's meant to be used as a platform for creating programming tutorials, not for running or debugging production code.

Official Python 3 support is coming soon; -for now, try the Python 3 fork by -Peter Wentworth. +for now, try the Python 3 forks by CS Circles and +Peter Wentworth.

Check out the -Copyright © 2010-2011 Philip Guo. All rights reserved. +Copyright © 2010-2012 Philip Guo. All rights reserved. - diff --git a/tutorials/MIT-6.01/README b/v1-v2/tutorials/MIT-6.01/README similarity index 100% rename from tutorials/MIT-6.01/README rename to v1-v2/tutorials/MIT-6.01/README diff --git a/tutorials/MIT-6.01/map.py b/v1-v2/tutorials/MIT-6.01/map.py similarity index 100% rename from tutorials/MIT-6.01/map.py rename to v1-v2/tutorials/MIT-6.01/map.py diff --git a/tutorials/MIT-6.01/oop_1.py b/v1-v2/tutorials/MIT-6.01/oop_1.py similarity index 100% rename from tutorials/MIT-6.01/oop_1.py rename to v1-v2/tutorials/MIT-6.01/oop_1.py diff --git a/tutorials/MIT-6.01/oop_2.py b/v1-v2/tutorials/MIT-6.01/oop_2.py similarity index 100% rename from tutorials/MIT-6.01/oop_2.py rename to v1-v2/tutorials/MIT-6.01/oop_2.py diff --git a/tutorials/MIT-6.01/oop_3.py b/v1-v2/tutorials/MIT-6.01/oop_3.py similarity index 100% rename from tutorials/MIT-6.01/oop_3.py rename to v1-v2/tutorials/MIT-6.01/oop_3.py diff --git a/tutorials/MIT-6.01/summation.py b/v1-v2/tutorials/MIT-6.01/summation.py similarity index 100% rename from tutorials/MIT-6.01/summation.py rename to v1-v2/tutorials/MIT-6.01/summation.py diff --git a/tutorials/README b/v1-v2/tutorials/README similarity index 100% rename from tutorials/README rename to v1-v2/tutorials/README diff --git a/tutorials/advanced/map.py b/v1-v2/tutorials/advanced/map.py similarity index 100% rename from tutorials/advanced/map.py rename to v1-v2/tutorials/advanced/map.py diff --git a/tutorials/math/newton.py b/v1-v2/tutorials/math/newton.py similarity index 100% rename from tutorials/math/newton.py rename to v1-v2/tutorials/math/newton.py diff --git a/tutorials/oop/oop_demo.py b/v1-v2/tutorials/oop/oop_demo.py similarity index 100% rename from tutorials/oop/oop_demo.py rename to v1-v2/tutorials/oop/oop_demo.py diff --git a/tutorials/personal-finance/compound_interest.py b/v1-v2/tutorials/personal-finance/compound_interest.py similarity index 100% rename from tutorials/personal-finance/compound_interest.py rename to v1-v2/tutorials/personal-finance/compound_interest.py diff --git a/yellow-happy-face.png b/v1-v2/yellow-happy-face.png similarity index 100% rename from yellow-happy-face.png rename to v1-v2/yellow-happy-face.png diff --git a/v3/GChartWrapper/GChart.py b/v3/GChartWrapper/GChart.py new file mode 100644 index 000000000..275fa544d --- /dev/null +++ b/v3/GChartWrapper/GChart.py @@ -0,0 +1,782 @@ +# (modified by Philip Guo to remove utf-8 dependencies and unnecessary imports) + +################################################################################ +# GChartWrapper - v0.8 +# Copyright (C) 2009 Justin Quick +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as published +# by the Free Software Foundation. +# +# Thanks to anyone who does anything for this project. +# If you have even the smallest revision, please email me at above address. +################################################################################ +""" +GChartWrapper - Google Chart API Wrapper + +The wrapper can render the URL of the Google chart based on your parameters. +With the chart you can render an HTML img tag to insert into webpages on the fly, +show it directly in a webbrowser, or save the chart PNG to disk. New versions +can generate PIL PngImage instances. + +Example + + >>> G = GChart('lc',['simpleisbetterthancomplexcomplexisbetterthancomplicated']) + >>> G.title('The Zen of Python','00cc00',36) + >>> G.color('00cc00') + >>> str(G) + 'http://chart.apis.google.com/chart? + chd=e:simpleisbetterthancomplexcomplexisbetterthancomplicated + &chs=300x150 + &cht=lc + &chtt=The+Zen+of+Python' + >>> G.image() # PIL instance + + >>> 1#G.show() # Webbrowser open + True + >>> G.save('tmp.png') # Save to disk + 'tmp.png' + +See tests.py for unit test and other examples +""" +from GChartWrapper.constants import * +from GChartWrapper.encoding import Encoder +from copy import copy + +def lookup_color(color): + """ + Returns the hex color for any valid css color name + + >>> lookup_color('aliceblue') + 'F0F8FF' + """ + if color is None: return + color = color.lower() + if color in COLOR_MAP: + return COLOR_MAP[color] + return color + +def color_args(args, *indexes): + """ + Color a list of arguments on particular indexes + + >>> c = color_args([None,'blue'], 1) + >>> c.next() + None + >>> c.next() + '0000FF' + """ + for i,arg in enumerate(args): + if i in indexes: + yield lookup_color(arg) + else: + yield arg + + +class Axes(dict): + """ + Axes attribute dictionary storage + + Use this class via GChart(...).axes + Methods are taken one at a time, like so: + + >>> G = GChart() + >>> G.axes.type('xy') + {} + >>> G.axes.label(1,'Label1') # X Axis + {} + >>> G.axes.label(2,'Label2') # Y Axis + {} + """ + def __init__(self, parent): + self.parent = parent + self.data = {'ticks':[],'labels':[],'positions':[], + 'ranges':[],'styles':[]} + dict.__init__(self) + + def tick(self, index, length): + """ + Add tick marks in order of axes by width + APIPARAM: chxtc , + """ + assert int(length) <= 25, 'Width cannot be more than 25' + self.data['ticks'].append('%s,%d'%(index,length)) + return self.parent + + def type(self, atype): + """ + Define the type of axes you wish to use + atype must be one of x,t,y,r + APIPARAM: chxt + """ + for char in atype: + assert char in 'xtyr', 'Invalid axes type: %s'%char + if not ',' in atype: + atype = ','.join(atype) + self['chxt'] = atype + return self.parent + __call__ = type + + def label(self, index, *args): + """ + Label each axes one at a time + args are of the form

s around + // "paragraphs" that are wrapped in non-block-level tags, such as anchors, + // phrase emphasis, and spans. The list of tags we're looking for is + // hard-coded: + var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del" + var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math" + + // First, look for nested blocks, e.g.: + //

+ // + // The outermost tags must start at the left margin for this to match, and + // the inner nested divs must be indented. + // We need to do this before the next, more liberal match, because the next + // match will start at the first `
` and stop at the first `
`. + + // attacklab: This regex can be expensive when it fails. + + /* + text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_a) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*?\n // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm, hashElement); + + // + // Now match more liberally, simply from `\n` to `\n` + // + + /* + text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_b) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*? // any number of lines, minimally matching + .* // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm, hashElement); + + // Special case just for
. It was easier to make a special case than + // to make the other regex more complicated. + + /* + text = text.replace(/ + \n // Starting after a blank line + [ ]{0,3} + ( // save in $1 + (<(hr) // start tag = $2 + \b // word break + ([^<>])*? + \/?>) // the matching end tag + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashElement); + */ + text = text.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, hashElement); + + // Special case for standalone HTML comments: + + /* + text = text.replace(/ + \n\n // Starting after a blank line + [ ]{0,3} // attacklab: g_tab_width - 1 + ( // save in $1 + -]|-[^>])(?:[^-]|-[^-])*)--) // see http://www.w3.org/TR/html-markup/syntax.html#comments and http://meta.stackoverflow.com/q/95256 + > + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashElement); + */ + text = text.replace(/\n\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g, hashElement); + + // PHP and ASP-style processor instructions ( and <%...%>) + + /* + text = text.replace(/ + (?: + \n\n // Starting after a blank line + ) + ( // save in $1 + [ ]{0,3} // attacklab: g_tab_width - 1 + (?: + <([?%]) // $2 + [^\r]*? + \2> + ) + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashElement); + */ + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, hashElement); + + return text; + } + + function hashElement(wholeMatch, m1) { + var blockText = m1; + + // Undo double lines + blockText = blockText.replace(/^\n+/, ""); + + // strip trailing blank lines + blockText = blockText.replace(/\n+$/g, ""); + + // Replace the element text with a marker ("~KxK" where x is its key) + blockText = "\n\n~K" + (g_html_blocks.push(blockText) - 1) + "K\n\n"; + + return blockText; + } + + function _RunBlockGamut(text, doNotUnhash) { + // + // These are all the transformations that form block-level + // tags like paragraphs, headers, and list items. + // + text = _DoHeaders(text); + + // Do Horizontal Rules: + var replacement = "
\n"; + text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, replacement); + text = text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm, replacement); + text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm, replacement); + + text = _DoLists(text); + text = _DoCodeBlocks(text); + text = _DoBlockQuotes(text); + + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

tags around block-level tags. + text = _HashHTMLBlocks(text); + text = _FormParagraphs(text, doNotUnhash); + + return text; + } + + function _RunSpanGamut(text) { + // + // These are all the transformations that occur *within* block-level + // tags like paragraphs, headers, and list items. + // + + text = _DoCodeSpans(text); + text = _EscapeSpecialCharsWithinTagAttributes(text); + text = _EncodeBackslashEscapes(text); + + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = _DoImages(text); + text = _DoAnchors(text); + + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = _DoAutoLinks(text); + text = _EncodeAmpsAndAngles(text); + text = _DoItalicsAndBold(text); + + // Do hard breaks: + text = text.replace(/ +\n/g, "
\n"); + + return text; + } + + function _EscapeSpecialCharsWithinTagAttributes(text) { + // + // Within tags -- meaning between < and > -- encode [\ ` * _] so they + // don't conflict with their use in Markdown for code, italics and strong. + // + + // Build a regex to find HTML tags and comments. See Friedl's + // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. + + // SE: changed the comment part of the regex + + var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi; + + text = text.replace(regex, function (wholeMatch) { + var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, "$1`"); + tag = escapeCharacters(tag, wholeMatch.charAt(1) == "!" ? "\\`*_/" : "\\`*_"); // also escape slashes in comments to prevent autolinking there -- http://meta.stackoverflow.com/questions/95987 + return tag; + }); + + return text; + } + + function _DoAnchors(text) { + // + // Turn Markdown link shortcuts into XHTML
tags. + // + // + // First, handle reference-style links: [link text] [id] + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + ) + ()()()() // pad remaining backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + )* + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g, writeAnchorTag); + */ + + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + ) + ()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); + + return text; + } + + function writeAnchorTag(wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (m7 == undefined) m7 = ""; + var whole_match = m1; + var link_text = m2; + var link_id = m3.toLowerCase(); + var url = m4; + var title = m7; + + if (url == "") { + if (link_id == "") { + // lower-case and turn embedded newlines into spaces + link_id = link_text.toLowerCase().replace(/ ?\n/g, " "); + } + url = "#" + link_id; + + if (g_urls.get(link_id) != undefined) { + url = g_urls.get(link_id); + if (g_titles.get(link_id) != undefined) { + title = g_titles.get(link_id); + } + } + else { + if (whole_match.search(/\(\s*\)$/m) > -1) { + // Special case for explicit empty url + url = ""; + } else { + return whole_match; + } + } + } + url = encodeProblemUrlChars(url); + url = escapeCharacters(url, "*_"); + var result = "" + link_text + ""; + + return result; + } + + function _DoImages(text) { + // + // Turn Markdown image shortcuts into tags. + // + + // + // First, handle reference-style labeled images: ![alt text][id] + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + !\[ + (.*?) // alt text = $2 + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + ) + ()()()() // pad rest of backreferences + /g, writeImageTag); + */ + text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeImageTag); + + // + // Next, handle inline images: ![alt text](url "optional title") + // Don't forget: encode * and _ + + /* + text = text.replace(/ + ( // wrap whole match in $1 + !\[ + (.*?) // alt text = $2 + \] + \s? // One optional whitespace character + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // src url = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // title = $7 + \6 // matching quote + [ \t]* + )? // title is optional + \) + ) + /g, writeImageTag); + */ + text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); + + return text; + } + + function writeImageTag(wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + var whole_match = m1; + var alt_text = m2; + var link_id = m3.toLowerCase(); + var url = m4; + var title = m7; + + if (!title) title = ""; + + if (url == "") { + if (link_id == "") { + // lower-case and turn embedded newlines into spaces + link_id = alt_text.toLowerCase().replace(/ ?\n/g, " "); + } + url = "#" + link_id; + + if (g_urls.get(link_id) != undefined) { + url = g_urls.get(link_id); + if (g_titles.get(link_id) != undefined) { + title = g_titles.get(link_id); + } + } + else { + return whole_match; + } + } + + alt_text = alt_text.replace(/"/g, """); + url = escapeCharacters(url, "*_"); + var result = "\""" + _RunSpanGamut(m1) + "\n\n"; } + ); + + text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, + function (matchFound, m1) { return "

" + _RunSpanGamut(m1) + "

\n\n"; } + ); + + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // + + /* + text = text.replace(/ + ^(\#{1,6}) // $1 = string of #'s + [ \t]* + (.+?) // $2 = Header text + [ \t]* + \#* // optional closing #'s (not counted) + \n+ + /gm, function() {...}); + */ + + text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, + function (wholeMatch, m1, m2) { + var h_level = m1.length; + return "" + _RunSpanGamut(m2) + "\n\n"; + } + ); + + return text; + } + + function _DoLists(text) { + // + // Form HTML ordered (numbered) and unordered (bulleted) lists. + // + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += "~0"; + + // Re-usable pattern to match any entirel ul or ol list: + + /* + var whole_list = / + ( // $1 = whole list + ( // $2 + [ ]{0,3} // attacklab: g_tab_width - 1 + ([*+-]|\d+[.]) // $3 = first list item marker + [ \t]+ + ) + [^\r]+? + ( // $4 + ~0 // sentinel for workaround; should be $ + | + \n{2,} + (?=\S) + (?! // Negative lookahead for another list item marker + [ \t]* + (?:[*+-]|\d+[.])[ \t]+ + ) + ) + ) + /g + */ + var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + + if (g_list_level) { + text = text.replace(whole_list, function (wholeMatch, m1, m2) { + var list = m1; + var list_type = (m2.search(/[*+-]/g) > -1) ? "ul" : "ol"; + + var result = _ProcessListItems(list, list_type); + + // Trim any trailing whitespace, to put the closing `` + // up on the preceding line, to get it past the current stupid + // HTML block parser. This is a hack to work around the terrible + // hack that is the HTML block parser. + result = result.replace(/\s+$/, ""); + result = "<" + list_type + ">" + result + "\n"; + return result; + }); + } else { + whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; + text = text.replace(whole_list, function (wholeMatch, m1, m2, m3) { + var runup = m1; + var list = m2; + + var list_type = (m3.search(/[*+-]/g) > -1) ? "ul" : "ol"; + var result = _ProcessListItems(list, list_type); + result = runup + "<" + list_type + ">\n" + result + "\n"; + return result; + }); + } + + // attacklab: strip sentinel + text = text.replace(/~0/, ""); + + return text; + } + + var _listItemMarkers = { ol: "\\d+[.]", ul: "[*+-]" }; + + function _ProcessListItems(list_str, list_type) { + // + // Process the contents of a single ordered or unordered list, splitting it + // into individual list items. + // + // list_type is either "ul" or "ol". + + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + + g_list_level++; + + // trim trailing blank lines: + list_str = list_str.replace(/\n{2,}$/, "\n"); + + // attacklab: add sentinel to emulate \z + list_str += "~0"; + + // In the original attacklab showdown, list_type was not given to this function, and anything + // that matched /[*+-]|\d+[.]/ would just create the next
  • , causing this mismatch: + // + // Markdown rendered by WMD rendered by MarkdownSharp + // ------------------------------------------------------------------ + // 1. first 1. first 1. first + // 2. second 2. second 2. second + // - third 3. third * third + // + // We changed this to behave identical to MarkdownSharp. This is the constructed RegEx, + // with {MARKER} being one of \d+[.] or [*+-], depending on list_type: + + /* + list_str = list_str.replace(/ + (^[ \t]*) // leading whitespace = $1 + ({MARKER}) [ \t]+ // list marker = $2 + ([^\r]+? // list item text = $3 + (\n+) + ) + (?= + (~0 | \2 ({MARKER}) [ \t]+) + ) + /gm, function(){...}); + */ + + var marker = _listItemMarkers[list_type]; + var re = new RegExp("(^[ \\t]*)(" + marker + ")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1(" + marker + ")[ \\t]+))", "gm"); + var last_item_had_a_double_newline = false; + list_str = list_str.replace(re, + function (wholeMatch, m1, m2, m3) { + var item = m3; + var leading_space = m1; + var ends_with_double_newline = /\n\n$/.test(item); + var contains_double_newline = ends_with_double_newline || item.search(/\n{2,}/) > -1; + + if (contains_double_newline || last_item_had_a_double_newline) { + item = _RunBlockGamut(_Outdent(item), /* doNotUnhash = */true); + } + else { + // Recursion for sub-lists: + item = _DoLists(_Outdent(item)); + item = item.replace(/\n$/, ""); // chomp(item) + item = _RunSpanGamut(item); + } + last_item_had_a_double_newline = ends_with_double_newline; + return "
  • " + item + "
  • \n"; + } + ); + + // attacklab: strip sentinel + list_str = list_str.replace(/~0/g, ""); + + g_list_level--; + return list_str; + } + + function _DoCodeBlocks(text) { + // + // Process Markdown `
    ` blocks.
    +            //  
    +
    +            /*
    +            text = text.replace(/
    +                (?:\n\n|^)
    +                (                               // $1 = the code block -- one or more lines, starting with a space/tab
    +                    (?:
    +                        (?:[ ]{4}|\t)           // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    +                        .*\n+
    +                    )+
    +                )
    +                (\n*[ ]{0,3}[^ \t\n]|(?=~0))    // attacklab: g_tab_width
    +            /g ,function(){...});
    +            */
    +
    +            // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    +            text += "~0";
    +
    +            text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    +                function (wholeMatch, m1, m2) {
    +                    var codeblock = m1;
    +                    var nextChar = m2;
    +
    +                    codeblock = _EncodeCode(_Outdent(codeblock));
    +                    codeblock = _Detab(codeblock);
    +                    codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines
    +                    codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace
    +
    +                    codeblock = "
    " + codeblock + "\n
    "; + + return "\n\n" + codeblock + "\n\n" + nextChar; + } + ); + + // attacklab: strip sentinel + text = text.replace(/~0/, ""); + + return text; + } + + function hashBlock(text) { + text = text.replace(/(^\n+|\n+$)/g, ""); + return "\n\n~K" + (g_html_blocks.push(text) - 1) + "K\n\n"; + } + + function _DoCodeSpans(text) { + // + // * Backtick quotes are used for spans. + // + // * You can use multiple backticks as the delimiters if you want to + // include literal backticks in the code span. So, this input: + // + // Just type ``foo `bar` baz`` at the prompt. + // + // Will translate to: + // + //

    Just type foo `bar` baz at the prompt.

    + // + // There's no arbitrary limit to the number of backticks you + // can use as delimters. If you need three consecutive backticks + // in your code, use four for delimiters, etc. + // + // * You can use spaces to get literal backticks at the edges: + // + // ... type `` `bar` `` ... + // + // Turns to: + // + // ... type `bar` ... + // + + /* + text = text.replace(/ + (^|[^\\]) // Character before opening ` can't be a backslash + (`+) // $2 = Opening run of ` + ( // $3 = The code block + [^\r]*? + [^`] // attacklab: work around lack of lookbehind + ) + \2 // Matching closer + (?!`) + /gm, function(){...}); + */ + + text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, + function (wholeMatch, m1, m2, m3, m4) { + var c = m3; + c = c.replace(/^([ \t]*)/g, ""); // leading whitespace + c = c.replace(/[ \t]*$/g, ""); // trailing whitespace + c = _EncodeCode(c); + return m1 + "" + c + ""; + } + ); + + return text; + } + + function _EncodeCode(text) { + // + // Encode/escape certain characters inside Markdown code runs. + // The point is that in code, these characters are literals, + // and lose their special Markdown meanings. + // + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text.replace(/&/g, "&"); + + // Do the angle bracket song and dance: + text = text.replace(//g, ">"); + + // Now, escape characters that are magic in Markdown: + text = escapeCharacters(text, "\*_{}[]\\", false); + + // jj the line above breaks this: + //--- + + //* Item + + // 1. Subitem + + // special char: * + //--- + + return text; + } + + function _DoItalicsAndBold(text) { + + // must go first: + text = text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g, + "$1$3$4"); + + text = text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g, + "$1$3$4"); + + return text; + } + + function _DoBlockQuotes(text) { + + /* + text = text.replace(/ + ( // Wrap whole match in $1 + ( + ^[ \t]*>[ \t]? // '>' at the start of a line + .+\n // rest of the first line + (.+\n)* // subsequent consecutive lines + \n* // blanks + )+ + ) + /gm, function(){...}); + */ + + text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, + function (wholeMatch, m1) { + var bq = m1; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + + bq = bq.replace(/^[ \t]*>[ \t]?/gm, "~0"); // trim one level of quoting + + // attacklab: clean up hack + bq = bq.replace(/~0/g, ""); + + bq = bq.replace(/^[ \t]+$/gm, ""); // trim whitespace-only lines + bq = _RunBlockGamut(bq); // recurse + + bq = bq.replace(/(^|\n)/g, "$1 "); + // These leading spaces screw with
     content, so we need to fix that:
    +                    bq = bq.replace(
    +                            /(\s*
    [^\r]+?<\/pre>)/gm,
    +                        function (wholeMatch, m1) {
    +                            var pre = m1;
    +                            // attacklab: hack around Konqueror 3.5.4 bug:
    +                            pre = pre.replace(/^  /mg, "~0");
    +                            pre = pre.replace(/~0/g, "");
    +                            return pre;
    +                        });
    +
    +                    return hashBlock("
    \n" + bq + "\n
    "); + } + ); + return text; + } + + function _FormParagraphs(text, doNotUnhash) { + // + // Params: + // $text - string to process with html

    tags + // + + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ""); + text = text.replace(/\n+$/g, ""); + + var grafs = text.split(/\n{2,}/g); + var grafsOut = []; + + // + // Wrap

    tags. + // + var end = grafs.length; + for (var i = 0; i < end; i++) { + var str = grafs[i]; + + // if this is an HTML marker, copy it + if (str.search(/~K(\d+)K/g) >= 0) { + grafsOut.push(str); + } + else if (str.search(/\S/) >= 0) { + str = _RunSpanGamut(str); + str = str.replace(/^([ \t]*)/g, "

    "); + str += "

    " + grafsOut.push(str); + } + + } + // + // Unhashify HTML blocks + // + if (!doNotUnhash) { + end = grafsOut.length; + for (var i = 0; i < end; i++) { + // if this is a marker for an html block... + while (grafsOut[i].search(/~K(\d+)K/) >= 0) { + var blockText = g_html_blocks[RegExp.$1]; + blockText = blockText.replace(/\$/g, "$$$$"); // Escape any dollar signs + grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); + } + } + } + return grafsOut.join("\n\n"); + } + + function _EncodeAmpsAndAngles(text) { + // Smart processing for ampersands and angle brackets that need to be encoded. + + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"); + + // Encode naked <'s + text = text.replace(/<(?![a-z\/?\$!])/gi, "<"); + + return text; + } + + function _EncodeBackslashEscapes(text) { + // + // Parameter: String. + // Returns: The string, with after processing the following backslash + // escape sequences. + // + + // attacklab: The polite way to do this is with the new + // escapeCharacters() function: + // + // text = escapeCharacters(text,"\\",true); + // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); + // + // ...but we're sidestepping its use of the (slow) RegExp constructor + // as an optimization for Firefox. This function gets called a LOT. + + text = text.replace(/\\(\\)/g, escapeCharacters_callback); + text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, escapeCharacters_callback); + return text; + } + + function _DoAutoLinks(text) { + + // note that at this point, all other URL in the text are already + // hyperlinked as + // *except* for the case + + // automatically add < and > around unadorned raw hyperlinks + // must be preceded by space/BOF and followed by non-word/EOF character + text = text.replace(/(^|\s)(https?|ftp)(:\/\/[-A-Z0-9+&@#\/%?=~_|\[\]\(\)!:,\.;]*[-A-Z0-9+&@#\/%=~_|\[\]])($|\W)/gi, "$1<$2$3>$4"); + + // autolink anything like + + var replacer = function (wholematch, m1) { return "" + pluginHooks.plainLinkText(m1) + ""; } + text = text.replace(/<((https?|ftp):[^'">\s]+)>/gi, replacer); + + // Email addresses: + /* + text = text.replace(/ + < + (?:mailto:)? + ( + [-.\w]+ + \@ + [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ + ) + > + /gi, _DoAutoLinks_callback()); + */ + + /* disabling email autolinking, since we don't do that on the server, either + text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, + function(wholeMatch,m1) { + return _EncodeEmailAddress( _UnescapeSpecialChars(m1) ); + } + ); + */ + return text; + } + + function _UnescapeSpecialChars(text) { + // + // Swap back in all the special characters we've hidden. + // + text = text.replace(/~E(\d+)E/g, + function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + } + ); + return text; + } + + function _Outdent(text) { + // + // Remove one level of line-leading tabs or spaces + // + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + + text = text.replace(/^(\t|[ ]{1,4})/gm, "~0"); // attacklab: g_tab_width + + // attacklab: clean up hack + text = text.replace(/~0/g, "") + + return text; + } + + function _Detab(text) { + if (!/\t/.test(text)) + return text; + + var spaces = [" ", " ", " ", " "], + skew = 0, + v; + + return text.replace(/[\n\t]/g, function (match, offset) { + if (match === "\n") { + skew = offset + 1; + return match; + } + v = (offset - skew) % 4; + skew = offset + 1; + return spaces[v]; + }); + } + + // + // attacklab: Utility functions + // + + var _problemUrlChars = /(?:["'*()[\]:]|~D)/g; + + // hex-encodes some unusual "problem" chars in URLs to avoid URL detection problems + function encodeProblemUrlChars(url) { + if (!url) + return ""; + + var len = url.length; + + return url.replace(_problemUrlChars, function (match, offset) { + if (match == "~D") // escape for dollar + return "%24"; + if (match == ":") { + if (offset == len - 1 || /[0-9\/]/.test(url.charAt(offset + 1))) + return ":" + } + return "%" + match.charCodeAt(0).toString(16); + }); + } + + + function escapeCharacters(text, charsToEscape, afterBackslash) { + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g, "\\$1") + "])"; + + if (afterBackslash) { + regexString = "\\\\" + regexString; + } + + var regex = new RegExp(regexString, "g"); + text = text.replace(regex, escapeCharacters_callback); + + return text; + } + + + function escapeCharacters_callback(wholeMatch, m1) { + var charCodeToEscape = m1.charCodeAt(0); + return "~E" + charCodeToEscape + "E"; + } + + }; // end of the Markdown.Converter constructor + +})(); diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/MathJax.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/MathJax.js new file mode 100644 index 000000000..99ebf8d56 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/MathJax.js @@ -0,0 +1,30 @@ +/************************************************************* + * + * MathJax.js + * + * The main code for the MathJax math-typesetting library. See + * http://www.mathjax.org/ for details. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2009-2012 Design Science, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if (!window.MathJax) {window.MathJax = {}} + +MathJax.isPacked = true; + +if(document.getElementById&&document.childNodes&&document.createElement){if(!window.MathJax){window.MathJax={}}if(!MathJax.Hub){MathJax.version="2.0";MathJax.fileversion="2.0.3";(function(d){var b=window[d];if(!b){b=window[d]={}}var f=[];var c=function(g){var h=g.constructor;if(!h){h=new Function("")}for(var i in g){if(i!=="constructor"&&g.hasOwnProperty(i)){h[i]=g[i]}}return h};var a=function(){return new Function("return arguments.callee.Init.call(this,arguments)")};var e=a();e.prototype={bug_test:1};if(!e.prototype.bug_test){a=function(){return function(){return arguments.callee.Init.call(this,arguments)}}}b.Object=c({constructor:a(),Subclass:function(g,i){var h=a();h.SUPER=this;h.Init=this.Init;h.Subclass=this.Subclass;h.Augment=this.Augment;h.protoFunction=this.protoFunction;h.can=this.can;h.has=this.has;h.isa=this.isa;h.prototype=new this(f);h.prototype.constructor=h;h.Augment(g,i);return h},Init:function(g){var h=this;if(g.length===1&&g[0]===f){return h}if(!(h instanceof g.callee)){h=new g.callee(f)}return h.Init.apply(h,g)||h},Augment:function(g,h){var i;if(g!=null){for(i in g){if(g.hasOwnProperty(i)){this.protoFunction(i,g[i])}}if(g.toString!==this.prototype.toString&&g.toString!=={}.toString){this.protoFunction("toString",g.toString)}}if(h!=null){for(i in h){if(h.hasOwnProperty(i)){this[i]=h[i]}}}return this},protoFunction:function(h,g){this.prototype[h]=g;if(typeof g==="function"){g.SUPER=this.SUPER.prototype}},prototype:{Init:function(){},SUPER:function(g){return g.callee.SUPER},can:function(g){return typeof(this[g])==="function"},has:function(g){return typeof(this[g])!=="undefined"},isa:function(g){return(g instanceof Object)&&(this instanceof g)}},can:function(g){return this.prototype.can.call(this,g)},has:function(g){return this.prototype.has.call(this,g)},isa:function(h){var g=this;while(g){if(g===h){return true}else{g=g.SUPER}}return false},SimpleSUPER:c({constructor:function(g){return this.SimpleSUPER.define(g)},define:function(g){var i={};if(g!=null){for(var h in g){if(g.hasOwnProperty(h)){i[h]=this.wrap(h,g[h])}}if(g.toString!==this.prototype.toString&&g.toString!=={}.toString){i.toString=this.wrap("toString",g.toString)}}return i},wrap:function(i,h){if(typeof(h)==="function"&&h.toString().match(/\.\s*SUPER\s*\(/)){var g=new Function(this.wrapper);g.label=i;g.original=h;h=g;g.toString=this.stringify}return h},wrapper:function(){var h=arguments.callee;this.SUPER=h.SUPER[h.label];try{var g=h.original.apply(this,arguments)}catch(i){delete this.SUPER;throw i}delete this.SUPER;return g}.toString().replace(/^\s*function\s*\(\)\s*\{\s*/i,"").replace(/\s*\}\s*$/i,""),toString:function(){return this.original.toString.apply(this.original,arguments)}})})})("MathJax");(function(BASENAME){var BASE=window[BASENAME];if(!BASE){BASE=window[BASENAME]={}}var CALLBACK=function(data){var cb=new Function("return arguments.callee.execute.apply(arguments.callee,arguments)");for(var id in CALLBACK.prototype){if(CALLBACK.prototype.hasOwnProperty(id)){if(typeof(data[id])!=="undefined"){cb[id]=data[id]}else{cb[id]=CALLBACK.prototype[id]}}}cb.toString=CALLBACK.prototype.toString;return cb};CALLBACK.prototype={isCallback:true,hook:function(){},data:[],object:window,execute:function(){if(!this.called||this.autoReset){this.called=!this.autoReset;return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))}},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var ISCALLBACK=function(f){return(typeof(f)==="function"&&f.isCallback)};var EVAL=function(code){return eval.call(window,code)};EVAL("var __TeSt_VaR__ = 1");if(window.__TeSt_VaR__){try{delete window.__TeSt_VaR__}catch(error){window.__TeSt_VaR__=null}}else{if(window.execScript){EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";window.execScript(code);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}else{EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";var head=(document.getElementsByTagName("head"))[0];if(!head){head=document.body}var script=document.createElement("script");script.appendChild(document.createTextNode(code));head.appendChild(script);head.removeChild(script);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}}var USING=function(args,i){if(arguments.length>1){if(arguments.length===2&&!(typeof arguments[0]==="function")&&arguments[0] instanceof Object&&typeof arguments[1]==="number"){args=[].slice.call(args,i)}else{args=[].slice.call(arguments,0)}}if(args instanceof Array&&args.length===1){args=args[0]}if(typeof args==="function"){if(args.execute===CALLBACK.prototype.execute){return args}return CALLBACK({hook:args})}else{if(args instanceof Array){if(typeof(args[0])==="string"&&args[1] instanceof Object&&typeof args[1][args[0]]==="function"){return CALLBACK({hook:args[1][args[0]],object:args[1],data:args.slice(2)})}else{if(typeof args[0]==="function"){return CALLBACK({hook:args[0],data:args.slice(1)})}else{if(typeof args[1]==="function"){return CALLBACK({hook:args[1],object:args[0],data:args.slice(2)})}}}}else{if(typeof(args)==="string"){return CALLBACK({hook:EVAL,data:[args]})}else{if(args instanceof Object){return CALLBACK(args)}else{if(typeof(args)==="undefined"){return CALLBACK({})}}}}}throw Error("Can't make callback from given data")};var DELAY=function(time,callback){callback=USING(callback);callback.timeout=setTimeout(callback,time);return callback};var WAITFOR=function(callback,signal){callback=USING(callback);if(!callback.called){WAITSIGNAL(callback,signal);signal.pending++}};var WAITEXECUTE=function(){var signals=this.signal;delete this.signal;this.execute=this.oldExecute;delete this.oldExecute;var result=this.execute.apply(this,arguments);if(ISCALLBACK(result)&&!result.called){WAITSIGNAL(result,signals)}else{for(var i=0,m=signals.length;i0&&priorityf){f=document.styleSheets.length}if(!h){h=(document.getElementsByTagName("head"))[0];if(!h){h=document.body}}return h};var e=[];var b=function(){for(var j=0,h=e.length;j=this.timeout){h(this.STATUS.ERROR);return 1}return 0},file:function(i,h){if(h<0){a.Ajax.loadTimeout(i)}else{a.Ajax.loadComplete(i)}},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(h,i,j){if(h.time(j)){return}if(document.styleSheets.length>i&&document.styleSheets[i].cssRules&&document.styleSheets[i].cssRules.length){j(h.STATUS.OK)}else{setTimeout(h,h.delay)}},checkLength:function(h,k,m){if(h.time(m)){return}var l=0;var i=(k.sheet||k.styleSheet);try{if((i.cssRules||i.rules||[]).length>0){l=1}}catch(j){if(j.message.match(/protected variable|restricted URI/)){l=1}else{if(j.message.match(/Security error/)){l=1}}}if(l){setTimeout(a.Callback([m,h.STATUS.OK]),0)}else{setTimeout(h,h.delay)}}},loadComplete:function(h){h=this.fileURL(h);var i=this.loading[h];if(i&&!i.preloaded){a.Message.Clear(i.message);clearTimeout(i.timeout);if(i.script){if(e.length===0){setTimeout(b,0)}e.push(i.script)}this.loaded[h]=i.status;delete this.loading[h];this.addHook(h,i.callback)}else{if(i){delete this.loading[h]}this.loaded[h]=this.STATUS.OK;i={status:this.STATUS.OK}}if(!this.loadHooks[h]){return null}return this.loadHooks[h].Execute(i.status)},loadTimeout:function(h){if(this.loading[h].timeout){clearTimeout(this.loading[h].timeout)}this.loading[h].status=this.STATUS.ERROR;this.loadError(h);this.loadComplete(h)},loadError:function(h){a.Message.Set("File failed to load: "+h,null,2000);a.Hub.signal.Post(["file load error",h])},Styles:function(j,k){var h=this.StyleString(j);if(h===""){k=a.Callback(k);k()}else{var i=document.createElement("style");i.type="text/css";this.head=g(this.head);this.head.appendChild(i);if(i.styleSheet&&typeof(i.styleSheet.cssText)!=="undefined"){i.styleSheet.cssText=h}else{i.appendChild(document.createTextNode(h))}k=this.timer.create.call(this,k,i)}return k},StyleString:function(m){if(typeof(m)==="string"){return m}var j="",n,l;for(n in m){if(m.hasOwnProperty(n)){if(typeof m[n]==="string"){j+=n+" {"+m[n]+"}\n"}else{if(m[n] instanceof Array){for(var k=0;k1?d[1]:""));f=null}if(e&&(!b.preJax||d)){c.nodeValue=c.nodeValue.replace(b.postJax,(e.length>1?e[1]:""))}if(f&&!f.nodeValue.match(/\S/)){f=f.previousSibling}}if(b.preRemoveClass&&f&&f.className===b.preRemoveClass){a.MathJax.preview=f}a.MathJax.checked=1},processInput:function(a){var b,i=MathJax.ElementJax.STATE;var h,e,d=a.scripts.length;try{while(a.ithis.processUpdateTime&&a.i1){d.jax[a.outputJax].push(b)}b.MathJax.state=c.OUTPUT},prepareOutput:function(c,f){while(c.jthis.processUpdateTime&&h.i=0;o--){if(b[o].src.match(d)){q.script=b[o].innerHTML;if(RegExp.$2){var r=RegExp.$2.substr(1).split(/\&/);for(var n=0,h=r.length;n=parseInt(x[y])}}return true},Select:function(j){var i=j[c.Browser];if(i){return i(c.Browser)}return null}};var g=navigator.userAgent.replace(/^Mozilla\/(\d+\.)+\d+ /,"").replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"").replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) )?/,"");c.Browser=c.Insert(c.Insert(new String("Unknown"),{version:"0.0"}),a);for(var t in a){if(a.hasOwnProperty(t)){if(a[t]&&t.substr(0,2)==="is"){t=t.slice(2);if(t==="Mac"||t==="PC"){continue}c.Browser=c.Insert(new String(t),a);var p=new RegExp(".*(Version)/((?:\\d+\\.)+\\d+)|.*("+t+")"+(t=="MSIE"?" ":"/")+"((?:\\d+\\.)*\\d+)|(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)");var s=p.exec(g)||["","","","unknown","0.0"];c.Browser.name=(s[1]=="Version"?t:(s[3]||s[5]));c.Browser.version=s[2]||s[4]||s[6];break}}}c.Browser.Select({Safari:function(j){var i=parseInt((String(j.version).split("."))[0]);if(i>85){j.webkit=j.version}if(i>=534){j.version="5.1"}else{if(i>=533){j.version="5.0"}else{if(i>=526){j.version="4.0"}else{if(i>=525){j.version="3.1"}else{if(i>500){j.version="3.0"}else{if(i>400){j.version="2.0"}else{if(i>85){j.version="1.0"}}}}}}}j.isMobile=(navigator.appVersion.match(/Mobile/i)!=null);j.noContextMenu=j.isMobile},Firefox:function(j){if((j.version==="0.0"||navigator.userAgent.match(/Firefox/)==null)&&navigator.product==="Gecko"){var m=navigator.userAgent.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);if(m){j.version=m[1]}else{var i=(navigator.buildID||navigator.productSub||"0").substr(0,8);if(i>="20111220"){j.version="9.0"}else{if(i>="20111120"){j.version="8.0"}else{if(i>="20110927"){j.version="7.0"}else{if(i>="20110816"){j.version="6.0"}else{if(i>="20110621"){j.version="5.0"}else{if(i>="20110320"){j.version="4.0"}else{if(i>="20100121"){j.version="3.6"}else{if(i>="20090630"){j.version="3.5"}else{if(i>="20080617"){j.version="3.0"}else{if(i>="20061024"){j.version="2.0"}}}}}}}}}}}}j.isMobile=(navigator.appVersion.match(/Android/i)!=null||navigator.userAgent.match(/ Fennec\//)!=null)},Opera:function(i){i.version=opera.version()},MSIE:function(j){j.isIE9=!!(document.documentMode&&(window.performance||window.msPerformance));MathJax.HTML.setScriptBug=!j.isIE9||document.documentMode<9;var v=false;try{new ActiveXObject("MathPlayer.Factory.1");v=true}catch(m){}if(v&&!q.params.NoMathPlayer){var i=document.createElement("object");i.id="mathplayer";i.classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987";document.getElementsByTagName("head")[0].appendChild(i);document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");j.hasMathPlayer=true;if(document.readyState&&(document.readyState==="loading"||document.readyState==="interactive")){document.write('');j.mpImported=true}}else{document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink")}}});c.Browser.Select(MathJax.Message.browsers);c.queue=f.Callback.Queue();c.queue.Push(["Post",q.signal,"Begin"],["Config",q],["Cookie",q],["Styles",q],["Message",q],function(){var i=f.Callback.Queue(q.Jax(),q.Extensions());return i.Push({})},["Menu",q],q.onLoad(),function(){MathJax.isReady=true},["Typeset",q],["Hash",q],["MenuZoom",q],["Post",q.signal,"End"])})("MathJax")}}; + diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/boilerplate.css b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/boilerplate.css new file mode 100644 index 000000000..2b1535f44 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/boilerplate.css @@ -0,0 +1,77 @@ +/** + * HTML5 ✰ Boilerplate + * + * style.css contains a reset, font normalization and some base styles. + * + * Credit is left where credit is due. + * Much inspiration was taken from these projects: + * - yui.yahooapis.com/2.8.1/build/base/base.css + * - camendesign.com/design/ + * - praegnanz.de/weblog/htmlcssjs-kickstart + */ + + +/** + * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) + * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark + * html5doctor.com/html-5-reset-stylesheet/ + */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +sup { vertical-align: super; } +sub { vertical-align: sub; } + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +blockquote, q { quotes: none; } + +blockquote:before, blockquote:after, +q:before, q:after { content: ""; content: none; } + +ins { background-color: #ff9; color: #000; text-decoration: none; } + +mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; } + +del { text-decoration: line-through; } + +abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; } + +table { border-collapse: collapse; border-spacing: 0; } + +hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } + +input, select { vertical-align: middle; } + + +/** + * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/ + */ + +body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */ +select, input, textarea, button { font:99% sans-serif; } + +/* Normalize monospace sizing: + en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */ +pre, code, kbd, samp { font-family: monospace, sans-serif; } + +em,i { font-style: italic; } +b,strong { font-weight: bold; } diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/cell.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/cell.js new file mode 100644 index 000000000..4dbb9e6e6 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/cell.js @@ -0,0 +1,220 @@ +//---------------------------------------------------------------------------- +// Copyright (C) 2008-2011 The IPython Development Team +// +// Distributed under the terms of the BSD License. The full license is in +// the file COPYING, distributed as part of this software. +//---------------------------------------------------------------------------- + +//============================================================================ +// Cell +//============================================================================ + +var IPython = (function (IPython) { + + var utils = IPython.utils; + + + var Cell = function () { + this.placeholder = this.placeholder || ''; + this.read_only = false; + this.selected = false; + this.element = null; + this.metadata = {}; + // load this from metadata later ? + this.user_highlight == 'auto'; + this.create_element(); + if (this.element !== null) { + this.element.data("cell", this); + this.bind_events(); + } + this.cell_id = utils.uuid(); + }; + + + // Subclasses must implement create_element. + Cell.prototype.create_element = function () {}; + + + Cell.prototype.bind_events = function () { + var that = this; + // We trigger events so that Cell doesn't have to depend on Notebook. + that.element.click(function (event) { + if (that.selected === false) { + $([IPython.events]).trigger('select.Cell', {'cell':that}); + } + }); + that.element.focusin(function (event) { + if (that.selected === false) { + $([IPython.events]).trigger('select.Cell', {'cell':that}); + } + }); + }; + + + // typeset with MathJax if MathJax is available + Cell.prototype.typeset = function () { + if (window.MathJax){ + MathJax.Hub.Queue(["Typeset",MathJax.Hub]); + } + }; + + + Cell.prototype.select = function () { + this.element.addClass('ui-widget-content ui-corner-all'); + this.selected = true; + }; + + + Cell.prototype.unselect = function () { + this.element.removeClass('ui-widget-content ui-corner-all'); + this.selected = false; + }; + + + Cell.prototype.get_text = function () { + }; + + + Cell.prototype.set_text = function (text) { + }; + + + Cell.prototype.refresh = function () { + this.code_mirror.refresh(); + }; + + + Cell.prototype.edit = function () { + }; + + + Cell.prototype.render = function () { + }; + + + Cell.prototype.toJSON = function () { + var data = {}; + data.metadata = this.metadata; + return data; + }; + + + Cell.prototype.fromJSON = function (data) { + if (data.metadata !== undefined) { + this.metadata = data.metadata; + } + }; + + + Cell.prototype.is_splittable = function () { + return true; + }; + + + Cell.prototype.get_pre_cursor = function () { + var cursor = this.code_mirror.getCursor(); + var text = this.code_mirror.getRange({line:0,ch:0}, cursor); + text = text.replace(/^\n+/, '').replace(/\n+$/, ''); + return text; + } + + + Cell.prototype.get_post_cursor = function () { + var cursor = this.code_mirror.getCursor(); + var last_line_num = this.code_mirror.lineCount()-1; + var last_line_len = this.code_mirror.getLine(last_line_num).length; + var end = {line:last_line_num, ch:last_line_len} + var text = this.code_mirror.getRange(cursor, end); + text = text.replace(/^\n+/, '').replace(/\n+$/, ''); + return text; + }; + + + Cell.prototype.grow = function(element) { + // Grow the cell by hand. This is used upon reloading from JSON, when the + // autogrow handler is not called. + var dom = element.get(0); + var lines_count = 0; + // modified split rule from + // http://stackoverflow.com/questions/2035910/how-to-get-the-number-of-lines-in-a-textarea/2036424#2036424 + var lines = dom.value.split(/\r|\r\n|\n/); + lines_count = lines.length; + if (lines_count >= 1) { + dom.rows = lines_count; + } else { + dom.rows = 1; + } + }; + + + Cell.prototype.toggle_line_numbers = function () { + if (this.code_mirror.getOption('lineNumbers') == false) { + this.code_mirror.setOption('lineNumbers', true); + } else { + this.code_mirror.setOption('lineNumbers', false); + } + this.code_mirror.refresh(); + }; + + Cell.prototype.force_highlight = function(mode) { + this.user_highlight = mode; + this.auto_highlight(); + }; + + Cell.prototype._auto_highlight = function (modes) { + //Here we handle manually selected modes + if( this.user_highlight != undefined && this.user_highlight != 'auto' ) + { + var mode = this.user_highlight; + CodeMirror.autoLoadMode(this.code_mirror, mode); + this.code_mirror.setOption('mode', mode); + return; + } + var first_line = this.code_mirror.getLine(0); + // loop on every pairs + for( var mode in modes) { + var regs = modes[mode]['reg']; + // only one key every time but regexp can't be keys... + for(var reg in regs ) { + // here we handle non magic_modes + if(first_line.match(regs[reg]) != null) { + if (mode.search('magic_') != 0) { + this.code_mirror.setOption('mode',mode); + CodeMirror.autoLoadMode(this.code_mirror, mode); + return; + } + var open = modes[mode]['open']|| "%%"; + var close = modes[mode]['close']|| "%%end"; + var mmode = mode; + mode = mmode.substr(6); + CodeMirror.autoLoadMode(this.code_mirror, mode); + // create on the fly a mode that swhitch between + // plain/text and smth else otherwise `%%` is + // source of some highlight issues. + // we use patchedGetMode to circumvent a bug in CM + CodeMirror.defineMode(mmode , function(config) { + return CodeMirror.multiplexingMode( + CodeMirror.patchedGetMode(config, 'text/plain'), + // always set someting on close + {open: open, close: close, + mode: CodeMirror.patchedGetMode(config, mode), + delimStyle: "delimit" + } + ); + }); + this.code_mirror.setOption('mode', mmode); + return; + } + } + } + // fallback on default (python) + var default_mode = this.default_mode || 'text/plain'; + this.code_mirror.setOption('mode', default_mode); + }; + + IPython.Cell = Cell; + + return IPython; + +}(IPython)); + diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codecell.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codecell.js new file mode 100644 index 000000000..eb841ef6b --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codecell.js @@ -0,0 +1,322 @@ +//---------------------------------------------------------------------------- +// Copyright (C) 2008-2011 The IPython Development Team +// +// Distributed under the terms of the BSD License. The full license is in +// the file COPYING, distributed as part of this software. +//---------------------------------------------------------------------------- + +//============================================================================ +// CodeCell +//============================================================================ + +var IPython = (function (IPython) { + "use strict"; + + var utils = IPython.utils; + var key = IPython.utils.keycodes; + CodeMirror.modeURL = "/static/codemirror/mode/%N/%N.js"; + + var CodeCell = function (kernel) { + // The kernel doesn't have to be set at creation time, in that case + // it will be null and set_kernel has to be called later. + this.kernel = kernel || null; + this.code_mirror = null; + this.input_prompt_number = null; + this.tooltip_on_tab = true; + this.collapsed = false; + this.default_mode = 'python'; + IPython.Cell.apply(this, arguments); + + var that = this; + this.element.focusout( + function() { that.auto_highlight(); } + ); + }; + + + CodeCell.prototype = new IPython.Cell(); + + + CodeCell.prototype.auto_highlight = function () { + this._auto_highlight(IPython.config.cell_magic_highlight) + }; + + CodeCell.prototype.create_element = function () { + var cell = $('
    ').addClass('cell border-box-sizing code_cell vbox'); + cell.attr('tabindex','2'); + var input = $('
    ').addClass('input hbox'); + input.append($('
    ').addClass('prompt input_prompt')); + var input_area = $('
    ').addClass('input_area box-flex1'); + this.code_mirror = CodeMirror(input_area.get(0), { + indentUnit : 4, + mode: 'python', + theme: 'ipython', + readOnly: this.read_only, + extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess",'Backspace':"delSpaceToPrevTabStop"}, + onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this) + }); + input.append(input_area); + var output = $('
    '); + cell.append(input).append(output); + this.element = cell; + this.output_area = new IPython.OutputArea(output, true); + + // construct a completer only if class exist + // otherwise no print view + if (IPython.Completer !== undefined) + { + this.completer = new IPython.Completer(this); + } + }; + + CodeCell.prototype.handle_codemirror_keyevent = function (editor, event) { + // This method gets called in CodeMirror's onKeyDown/onKeyPress + // handlers and is used to provide custom key handling. Its return + // value is used to determine if CodeMirror should ignore the event: + // true = ignore, false = don't ignore. + + if (this.read_only){ + return false; + } + + var that = this; + // whatever key is pressed, first, cancel the tooltip request before + // they are sent, and remove tooltip if any, except for tab again + if (event.type === 'keydown' && event.which != key.TAB ) { + IPython.tooltip.remove_and_cancel_tooltip(); + }; + + var cur = editor.getCursor(); + if (event.keyCode === key.ENTER){ + this.auto_highlight(); + } + + if (event.keyCode === key.ENTER && (event.shiftKey || event.ctrlKey)) { + // Always ignore shift-enter in CodeMirror as we handle it. + return true; + } else if (event.which === 40 && event.type === 'keypress' && IPython.tooltip.time_before_tooltip >= 0) { + // triger on keypress (!) otherwise inconsistent event.which depending on plateform + // browser and keyboard layout ! + // Pressing '(' , request tooltip, don't forget to reappend it + IPython.tooltip.pending(that); + } else if (event.which === key.UPARROW && event.type === 'keydown') { + // If we are not at the top, let CM handle the up arrow and + // prevent the global keydown handler from handling it. + if (!that.at_top()) { + event.stop(); + return false; + } else { + return true; + }; + } else if (event.which === key.ESC) { + IPython.tooltip.remove_and_cancel_tooltip(true); + return true; + } else if (event.which === key.DOWNARROW && event.type === 'keydown') { + // If we are not at the bottom, let CM handle the down arrow and + // prevent the global keydown handler from handling it. + if (!that.at_bottom()) { + event.stop(); + return false; + } else { + return true; + }; + } else if (event.keyCode === key.TAB && event.type == 'keydown') { + // Tab completion. + //Do not trim here because of tooltip + var pre_cursor = editor.getRange({line:cur.line,ch:0},cur); + if (pre_cursor.trim() === "") { + // Don't autocomplete if the part of the line before the cursor + // is empty. In this case, let CodeMirror handle indentation. + return false; + } else if ((pre_cursor.substr(-1) === "("|| pre_cursor.substr(-1) === " ") && that.tooltip_on_tab ) { + IPython.tooltip.request(that); + // Prevent the event from bubbling up. + event.stop(); + // Prevent CodeMirror from handling the tab. + return true; + } else { + event.stop(); + this.completer.startCompletion(); + return true; + }; + } else { + // keypress/keyup also trigger on TAB press, and we don't want to + // use those to disable tab completion. + return false; + }; + return false; + }; + + + // Kernel related calls. + + CodeCell.prototype.set_kernel = function (kernel) { + this.kernel = kernel; + } + + + CodeCell.prototype.execute = function () { + this.output_area.clear_output(true, true, true); + this.set_input_prompt('*'); + this.element.addClass("running"); + var callbacks = { + 'execute_reply': $.proxy(this._handle_execute_reply, this), + 'output': $.proxy(this.output_area.handle_output, this.output_area), + 'clear_output': $.proxy(this.output_area.handle_clear_output, this.output_area), + 'set_next_input': $.proxy(this._handle_set_next_input, this) + }; + var msg_id = this.kernel.execute(this.get_text(), callbacks, {silent: false}); + }; + + + CodeCell.prototype._handle_execute_reply = function (content) { + this.set_input_prompt(content.execution_count); + this.element.removeClass("running"); + $([IPython.events]).trigger('set_dirty.Notebook', {'value': true}); + } + + CodeCell.prototype._handle_set_next_input = function (text) { + var data = {'cell': this, 'text': text} + $([IPython.events]).trigger('set_next_input.Notebook', data); + } + + // Basic cell manipulation. + + CodeCell.prototype.select = function () { + IPython.Cell.prototype.select.apply(this); + this.code_mirror.refresh(); + this.code_mirror.focus(); + this.auto_highlight(); + // We used to need an additional refresh() after the focus, but + // it appears that this has been fixed in CM. This bug would show + // up on FF when a newly loaded markdown cell was edited. + }; + + + CodeCell.prototype.select_all = function () { + var start = {line: 0, ch: 0}; + var nlines = this.code_mirror.lineCount(); + var last_line = this.code_mirror.getLine(nlines-1); + var end = {line: nlines-1, ch: last_line.length}; + this.code_mirror.setSelection(start, end); + }; + + + CodeCell.prototype.collapse = function () { + this.collapsed = true; + this.output_area.collapse(); + }; + + + CodeCell.prototype.expand = function () { + this.collapsed = false; + this.output_area.expand(); + }; + + + CodeCell.prototype.toggle_output = function () { + this.collapsed = Boolean(1 - this.collapsed); + this.output_area.toggle_output(); + }; + + + CodeCell.prototype.toggle_output_scroll = function () { + this.output_area.toggle_scroll(); + }; + + + CodeCell.prototype.set_input_prompt = function (number) { + this.input_prompt_number = number; + var ns = number || " "; + this.element.find('div.input_prompt').html('In [' + ns + ']:'); + }; + + + CodeCell.prototype.clear_input = function () { + this.code_mirror.setValue(''); + }; + + + CodeCell.prototype.get_text = function () { + return this.code_mirror.getValue(); + }; + + + CodeCell.prototype.set_text = function (code) { + return this.code_mirror.setValue(code); + }; + + + CodeCell.prototype.at_top = function () { + var cursor = this.code_mirror.getCursor(); + if (cursor.line === 0 && cursor.ch === 0) { + return true; + } else { + return false; + } + }; + + + CodeCell.prototype.at_bottom = function () { + var cursor = this.code_mirror.getCursor(); + if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) { + return true; + } else { + return false; + } + }; + + + CodeCell.prototype.clear_output = function (stdout, stderr, other) { + this.output_area.clear_output(stdout, stderr, other); + }; + + + // JSON serialization + + CodeCell.prototype.fromJSON = function (data) { + IPython.Cell.prototype.fromJSON.apply(this, arguments); + if (data.cell_type === 'code') { + if (data.input !== undefined) { + this.set_text(data.input); + // make this value the starting point, so that we can only undo + // to this state, instead of a blank cell + this.code_mirror.clearHistory(); + this.auto_highlight(); + } + if (data.prompt_number !== undefined) { + this.set_input_prompt(data.prompt_number); + } else { + this.set_input_prompt(); + }; + this.output_area.fromJSON(data.outputs); + if (data.collapsed !== undefined) { + if (data.collapsed) { + this.collapse(); + } else { + this.expand(); + }; + }; + }; + }; + + + CodeCell.prototype.toJSON = function () { + var data = IPython.Cell.prototype.toJSON.apply(this); + data.input = this.get_text(); + data.cell_type = 'code'; + if (this.input_prompt_number) { + data.prompt_number = this.input_prompt_number; + }; + var outputs = this.output_area.toJSON(); + data.outputs = outputs; + data.language = 'python'; + data.collapsed = this.collapsed; + return data; + }; + + + IPython.CodeCell = CodeCell; + + return IPython; +}(IPython)); diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codemirror.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codemirror.js new file mode 100644 index 000000000..98eceec17 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/codemirror.js @@ -0,0 +1,3243 @@ +// All functions that need access to the editor's state live inside +// the CodeMirror function. Below that, at the bottom of the file, +// some utilities are defined. + +// CodeMirror is the only global var we claim +var CodeMirror = (function() { + // This is the function that produces an editor instance. Its + // closure is used to store the editor state. + function CodeMirror(place, givenOptions) { + // Determine effective options based on given values and defaults. + var options = {}, defaults = CodeMirror.defaults; + for (var opt in defaults) + if (defaults.hasOwnProperty(opt)) + options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt]; + + // The element in which the editor lives. + var wrapper = document.createElement("div"); + wrapper.className = "CodeMirror" + (options.lineWrapping ? " CodeMirror-wrap" : ""); + // This mess creates the base DOM structure for the editor. + wrapper.innerHTML = + '
    ' + // Wraps and hides input textarea + '
    ' + + '
    ' + // The vertical scrollbar. Horizontal scrolling is handled by the scroller itself. + '
    ' + // The empty scrollbar content, used solely for managing the scrollbar thumb. + '
    ' + // This must be before the scroll area because it's float-right. + '
    ' + + '
    ' + // Set to the height of the text, causes scrolling + '
    ' + // Moved around its parent to cover visible view + '
    ' + + // Provides positioning relative to (visible) text origin + '
    ' + + // Used to measure text size + '
    ' + + '
     
    ' + // Absolutely positioned blinky cursor + '' + // Used to force a width + '
    ' + // DIVs containing the selection and the actual code + '
    '; + if (place.appendChild) place.appendChild(wrapper); else place(wrapper); + // I've never seen more elegant code in my life. + var inputDiv = wrapper.firstChild, input = inputDiv.firstChild, + scroller = wrapper.lastChild, code = scroller.firstChild, + mover = code.firstChild, gutter = mover.firstChild, gutterText = gutter.firstChild, + lineSpace = gutter.nextSibling.firstChild, measure = lineSpace.firstChild, + cursor = measure.nextSibling, widthForcer = cursor.nextSibling, + selectionDiv = widthForcer.nextSibling, lineDiv = selectionDiv.nextSibling, + scrollbar = inputDiv.nextSibling, scrollbarInner = scrollbar.firstChild; + themeChanged(); keyMapChanged(); + // Needed to hide big blue blinking cursor on Mobile Safari + if (ios) input.style.width = "0px"; + if (!webkit) scroller.draggable = true; + lineSpace.style.outline = "none"; + if (options.tabindex != null) input.tabIndex = options.tabindex; + if (options.autofocus) focusInput(); + if (!options.gutter && !options.lineNumbers) gutter.style.display = "none"; + // Needed to handle Tab key in KHTML + if (khtml) inputDiv.style.height = "1px", inputDiv.style.position = "absolute"; + + // Check for OS X >= 10.7. If so, we need to force a width on the scrollbar, and + // make it overlap the content. (But we only do this if the scrollbar doesn't already + // have a natural width. If the mouse is plugged in or the user sets the system pref + // to always show scrollbars, the scrollbar shouldn't overlap.) + if (mac_geLion) { + scrollbar.className += (overlapScrollbars() ? " cm-sb-overlap" : " cm-sb-nonoverlap"); + } else if (ie_lt8) { + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + scrollbar.className += " cm-sb-ie7"; + } + + // Check for problem with IE innerHTML not working when we have a + // P (or similar) parent node. + try { stringWidth("x"); } + catch (e) { + if (e.message.match(/runtime/i)) + e = new Error("A CodeMirror inside a P-style element does not work in Internet Explorer. (innerHTML bug)"); + throw e; + } + + // Delayed object wrap timeouts, making sure only one is active. blinker holds an interval. + var poll = new Delayed(), highlight = new Delayed(), blinker; + + // mode holds a mode API object. doc is the tree of Line objects, + // work an array of lines that should be parsed, and history the + // undo history (instance of History constructor). + var mode, doc = new BranchChunk([new LeafChunk([new Line("")])]), work, focused; + loadMode(); + // The selection. These are always maintained to point at valid + // positions. Inverted is used to remember that the user is + // selecting bottom-to-top. + var sel = {from: {line: 0, ch: 0}, to: {line: 0, ch: 0}, inverted: false}; + // Selection-related flags. shiftSelecting obviously tracks + // whether the user is holding shift. + var shiftSelecting, lastClick, lastDoubleClick, lastScrollTop = 0, lastScrollLeft = 0, draggingText, + overwrite = false, suppressEdits = false; + // Variables used by startOperation/endOperation to track what + // happened during the operation. + var updateInput, userSelChange, changes, textChanged, selectionChanged, leaveInputAlone, + gutterDirty, callbacks; + // Current visible range (may be bigger than the view window). + var displayOffset = 0, showingFrom = 0, showingTo = 0, lastSizeC = 0; + // bracketHighlighted is used to remember that a bracket has been + // marked. + var bracketHighlighted; + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + var maxLine = "", updateMaxLine = false, maxLineChanged = true; + var tabCache = {}; + + // Initialize the content. + operation(function(){setValue(options.value || ""); updateInput = false;})(); + var history = new History(); + + // Register our event handlers. + connect(scroller, "mousedown", operation(onMouseDown)); + connect(scroller, "dblclick", operation(onDoubleClick)); + connect(lineSpace, "selectstart", e_preventDefault); + // Gecko browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for Gecko. + if (!gecko) connect(scroller, "contextmenu", onContextMenu); + connect(scroller, "scroll", onScroll); + connect(scrollbar, "scroll", onScroll); + connect(scrollbar, "mousedown", function() {if (focused) setTimeout(focusInput, 0);}); + connect(scroller, "mousewheel", onMouseWheel); + connect(scroller, "DOMMouseScroll", onMouseWheel); + connect(window, "resize", function() {updateDisplay(true);}); + connect(input, "keyup", operation(onKeyUp)); + connect(input, "input", fastPoll); + connect(input, "keydown", operation(onKeyDown)); + connect(input, "keypress", operation(onKeyPress)); + connect(input, "focus", onFocus); + connect(input, "blur", onBlur); + + if (options.dragDrop) { + connect(scroller, "dragstart", onDragStart); + function drag_(e) { + if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; + e_stop(e); + } + connect(scroller, "dragenter", drag_); + connect(scroller, "dragover", drag_); + connect(scroller, "drop", operation(onDrop)); + } + connect(scroller, "paste", function(){focusInput(); fastPoll();}); + connect(input, "paste", fastPoll); + connect(input, "cut", operation(function(){ + if (!options.readOnly) replaceSelection(""); + })); + + // Needed to handle Tab key in KHTML + if (khtml) connect(code, "mouseup", function() { + if (document.activeElement == input) input.blur(); + focusInput(); + }); + + // IE throws unspecified error in certain cases, when + // trying to access activeElement before onload + var hasFocus; try { hasFocus = (document.activeElement == input); } catch(e) { } + if (hasFocus || options.autofocus) setTimeout(onFocus, 20); + else onBlur(); + + function isLine(l) {return l >= 0 && l < doc.size;} + // The instance object that we'll return. Mostly calls out to + // local functions in the CodeMirror function. Some do some extra + // range checking and/or clipping. operation is used to wrap the + // call so that changes it makes are tracked, and the display is + // updated afterwards. + var instance = wrapper.CodeMirror = { + getValue: getValue, + setValue: operation(setValue), + getSelection: getSelection, + replaceSelection: operation(replaceSelection), + focus: function(){window.focus(); focusInput(); onFocus(); fastPoll();}, + setOption: function(option, value) { + var oldVal = options[option]; + options[option] = value; + if (option == "mode" || option == "indentUnit") loadMode(); + else if (option == "readOnly" && value == "nocursor") {onBlur(); input.blur();} + else if (option == "readOnly" && !value) {resetInput(true);} + else if (option == "theme") themeChanged(); + else if (option == "lineWrapping" && oldVal != value) operation(wrappingChanged)(); + else if (option == "tabSize") updateDisplay(true); + else if (option == "keyMap") keyMapChanged(); + if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || option == "theme") { + gutterChanged(); + updateDisplay(true); + } + }, + getOption: function(option) {return options[option];}, + undo: operation(undo), + redo: operation(redo), + indentLine: operation(function(n, dir) { + if (typeof dir != "string") { + if (dir == null) dir = options.smartIndent ? "smart" : "prev"; + else dir = dir ? "add" : "subtract"; + } + if (isLine(n)) indentLine(n, dir); + }), + indentSelection: operation(indentSelected), + historySize: function() {return {undo: history.done.length, redo: history.undone.length};}, + clearHistory: function() {history = new History();}, + setHistory: function(histData) { + history = new History(); + history.done = histData.done; + history.undone = histData.undone; + }, + getHistory: function() { + history.time = 0; + return {done: history.done.concat([]), undone: history.undone.concat([])}; + }, + matchBrackets: operation(function(){matchBrackets(true);}), + getTokenAt: operation(function(pos) { + pos = clipPos(pos); + return getLine(pos.line).getTokenAt(mode, getStateBefore(pos.line), pos.ch); + }), + getStateAfter: function(line) { + line = clipLine(line == null ? doc.size - 1: line); + return getStateBefore(line + 1); + }, + cursorCoords: function(start, mode) { + if (start == null) start = sel.inverted; + return this.charCoords(start ? sel.from : sel.to, mode); + }, + charCoords: function(pos, mode) { + pos = clipPos(pos); + if (mode == "local") return localCoords(pos, false); + if (mode == "div") return localCoords(pos, true); + return pageCoords(pos); + }, + coordsChar: function(coords) { + var off = eltOffset(lineSpace); + return coordsChar(coords.x - off.left, coords.y - off.top); + }, + markText: operation(markText), + setBookmark: setBookmark, + findMarksAt: findMarksAt, + setMarker: operation(addGutterMarker), + clearMarker: operation(removeGutterMarker), + setLineClass: operation(setLineClass), + hideLine: operation(function(h) {return setLineHidden(h, true);}), + showLine: operation(function(h) {return setLineHidden(h, false);}), + onDeleteLine: function(line, f) { + if (typeof line == "number") { + if (!isLine(line)) return null; + line = getLine(line); + } + (line.handlers || (line.handlers = [])).push(f); + return line; + }, + lineInfo: lineInfo, + addWidget: function(pos, node, scroll, vert, horiz) { + pos = localCoords(clipPos(pos)); + var top = pos.yBot, left = pos.x; + node.style.position = "absolute"; + code.appendChild(node); + if (vert == "over") top = pos.y; + else if (vert == "near") { + var vspace = Math.max(scroller.offsetHeight, doc.height * textHeight()), + hspace = Math.max(code.clientWidth, lineSpace.clientWidth) - paddingLeft(); + if (pos.yBot + node.offsetHeight > vspace && pos.y > node.offsetHeight) + top = pos.y - node.offsetHeight; + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth; + } + node.style.top = (top + paddingTop()) + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = code.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") left = 0; + else if (horiz == "middle") left = (code.clientWidth - node.offsetWidth) / 2; + node.style.left = (left + paddingLeft()) + "px"; + } + if (scroll) + scrollIntoView(left, top, left + node.offsetWidth, top + node.offsetHeight); + }, + + lineCount: function() {return doc.size;}, + clipPos: clipPos, + getCursor: function(start) { + if (start == null) start = sel.inverted; + return copyPos(start ? sel.from : sel.to); + }, + somethingSelected: function() {return !posEq(sel.from, sel.to);}, + setCursor: operation(function(line, ch, user) { + if (ch == null && typeof line.line == "number") setCursor(line.line, line.ch, user); + else setCursor(line, ch, user); + }), + setSelection: operation(function(from, to, user) { + (user ? setSelectionUser : setSelection)(clipPos(from), clipPos(to || from)); + }), + getLine: function(line) {if (isLine(line)) return getLine(line).text;}, + getLineHandle: function(line) {if (isLine(line)) return getLine(line);}, + setLine: operation(function(line, text) { + if (isLine(line)) replaceRange(text, {line: line, ch: 0}, {line: line, ch: getLine(line).text.length}); + }), + removeLine: operation(function(line) { + if (isLine(line)) replaceRange("", {line: line, ch: 0}, clipPos({line: line+1, ch: 0})); + }), + replaceRange: operation(replaceRange), + getRange: function(from, to, lineSep) {return getRange(clipPos(from), clipPos(to), lineSep);}, + + triggerOnKeyDown: operation(onKeyDown), + execCommand: function(cmd) {return commands[cmd](instance);}, + // Stuff used by commands, probably not much use to outside code. + moveH: operation(moveH), + deleteH: operation(deleteH), + moveV: operation(moveV), + toggleOverwrite: function() { + if(overwrite){ + overwrite = false; + cursor.className = cursor.className.replace(" CodeMirror-overwrite", ""); + } else { + overwrite = true; + cursor.className += " CodeMirror-overwrite"; + } + }, + + posFromIndex: function(off) { + var lineNo = 0, ch; + doc.iter(0, doc.size, function(line) { + var sz = line.text.length + 1; + if (sz > off) { ch = off; return true; } + off -= sz; + ++lineNo; + }); + return clipPos({line: lineNo, ch: ch}); + }, + indexFromPos: function (coords) { + if (coords.line < 0 || coords.ch < 0) return 0; + var index = coords.ch; + doc.iter(0, coords.line, function (line) { + index += line.text.length + 1; + }); + return index; + }, + scrollTo: function(x, y) { + if (x != null) scroller.scrollLeft = x; + if (y != null) scrollbar.scrollTop = y; + updateDisplay([]); + }, + getScrollInfo: function() { + return {x: scroller.scrollLeft, y: scrollbar.scrollTop, + height: scrollbar.scrollHeight, width: scroller.scrollWidth}; + }, + setSize: function(width, height) { + function interpret(val) { + val = String(val); + return /^\d+$/.test(val) ? val + "px" : val; + } + if (width != null) wrapper.style.width = interpret(width); + if (height != null) scroller.style.height = interpret(height); + }, + + operation: function(f){return operation(f)();}, + compoundChange: function(f){return compoundChange(f);}, + refresh: function(){ + updateDisplay(true, null, lastScrollTop); + if (scrollbar.scrollHeight > lastScrollTop) + scrollbar.scrollTop = lastScrollTop; + }, + getInputField: function(){return input;}, + getWrapperElement: function(){return wrapper;}, + getScrollerElement: function(){return scroller;}, + getGutterElement: function(){return gutter;} + }; + + function getLine(n) { return getLineAt(doc, n); } + function updateLineHeight(line, height) { + gutterDirty = true; + var diff = height - line.height; + for (var n = line; n; n = n.parent) n.height += diff; + } + + function setValue(code) { + var top = {line: 0, ch: 0}; + updateLines(top, {line: doc.size - 1, ch: getLine(doc.size-1).text.length}, + splitLines(code), top, top); + updateInput = true; + } + function getValue(lineSep) { + var text = []; + doc.iter(0, doc.size, function(line) { text.push(line.text); }); + return text.join(lineSep || "\n"); + } + + function onScroll(e) { + if (scroller.scrollTop) { + scrollbar.scrollTop += scroller.scrollTop; + scroller.scrollTop = 0; + } + if (lastScrollTop != scrollbar.scrollTop || lastScrollLeft != scroller.scrollLeft) { + lastScrollTop = scrollbar.scrollTop; + lastScrollLeft = scroller.scrollLeft; + updateDisplay([]); + if (options.fixedGutter) gutter.style.left = scroller.scrollLeft + "px"; + if (options.onScroll) options.onScroll(instance); + } + } + + function onMouseDown(e) { + setShift(e_prop(e, "shiftKey")); + // Check whether this is a click in a widget + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == code && n != mover) return; + + // See if this is a click in the gutter + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == gutterText) { + if (options.onGutterClick) + options.onGutterClick(instance, indexOf(gutterText.childNodes, n) + showingFrom, e); + return e_preventDefault(e); + } + + var start = posFromMouse(e); + + switch (e_button(e)) { + case 3: + if (gecko) onContextMenu(e); + return; + case 2: + if (start) setCursor(start.line, start.ch, true); + setTimeout(focusInput, 20); + e_preventDefault(e); + return; + } + // For button 1, if it was clicked inside the editor + // (posFromMouse returning non-null), we have to adjust the + // selection. + if (!start) {if (e_target(e) == scroller) e_preventDefault(e); return;} + + if (!focused) onFocus(); + + var now = +new Date, type = "single"; + if (lastDoubleClick && lastDoubleClick.time > now - 400 && posEq(lastDoubleClick.pos, start)) { + type = "triple"; + e_preventDefault(e); + setTimeout(focusInput, 20); + selectLine(start.line); + } else if (lastClick && lastClick.time > now - 400 && posEq(lastClick.pos, start)) { + type = "double"; + lastDoubleClick = {time: now, pos: start}; + e_preventDefault(e); + var word = findWordAt(start); + setSelectionUser(word.from, word.to); + } else { lastClick = {time: now, pos: start}; } + + var last = start, going; + if (options.dragDrop && dragAndDrop && !options.readOnly && !posEq(sel.from, sel.to) && + !posLess(start, sel.from) && !posLess(sel.to, start) && type == "single") { + // Let the drag handler handle this. + if (webkit) scroller.draggable = true; + function dragEnd(e2) { + if (webkit) scroller.draggable = false; + draggingText = false; + up(); drop(); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + setCursor(start.line, start.ch, true); + focusInput(); + } + } + var up = connect(document, "mouseup", operation(dragEnd), true); + var drop = connect(scroller, "drop", operation(dragEnd), true); + draggingText = true; + // IE's approach to draggable + if (scroller.dragDrop) scroller.dragDrop(); + return; + } + e_preventDefault(e); + if (type == "single") setCursor(start.line, start.ch, true); + + var startstart = sel.from, startend = sel.to; + + function doSelect(cur) { + if (type == "single") { + setSelectionUser(start, cur); + } else if (type == "double") { + var word = findWordAt(cur); + if (posLess(cur, startstart)) setSelectionUser(word.from, startend); + else setSelectionUser(startstart, word.to); + } else if (type == "triple") { + if (posLess(cur, startstart)) setSelectionUser(startend, clipPos({line: cur.line, ch: 0})); + else setSelectionUser(startstart, clipPos({line: cur.line + 1, ch: 0})); + } + } + + function extend(e) { + var cur = posFromMouse(e, true); + if (cur && !posEq(cur, last)) { + if (!focused) onFocus(); + last = cur; + doSelect(cur); + updateInput = false; + var visible = visibleLines(); + if (cur.line >= visible.to || cur.line < visible.from) + going = setTimeout(operation(function(){extend(e);}), 150); + } + } + + function done(e) { + clearTimeout(going); + var cur = posFromMouse(e); + if (cur) doSelect(cur); + e_preventDefault(e); + focusInput(); + updateInput = true; + move(); up(); + } + var move = connect(document, "mousemove", operation(function(e) { + clearTimeout(going); + e_preventDefault(e); + if (!ie && !e_button(e)) done(e); + else extend(e); + }), true); + var up = connect(document, "mouseup", operation(done), true); + } + function onDoubleClick(e) { + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == gutterText) return e_preventDefault(e); + e_preventDefault(e); + } + function onDrop(e) { + if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; + e.preventDefault(); + var pos = posFromMouse(e, true), files = e.dataTransfer.files; + if (!pos || options.readOnly) return; + if (files && files.length && window.FileReader && window.File) { + function loadFile(file, i) { + var reader = new FileReader; + reader.onload = function() { + text[i] = reader.result; + if (++read == n) { + pos = clipPos(pos); + operation(function() { + var end = replaceRange(text.join(""), pos, pos); + setSelectionUser(pos, end); + })(); + } + }; + reader.readAsText(file); + } + var n = files.length, text = Array(n), read = 0; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + } else { + // Don't do a replace if the drop happened inside of the selected text. + if (draggingText && !(posLess(pos, sel.from) || posLess(sel.to, pos))) return; + try { + var text = e.dataTransfer.getData("Text"); + if (text) { + compoundChange(function() { + var curFrom = sel.from, curTo = sel.to; + setSelectionUser(pos, pos); + if (draggingText) replaceRange("", curFrom, curTo); + replaceSelection(text); + focusInput(); + }); + } + } + catch(e){} + } + } + function onDragStart(e) { + var txt = getSelection(); + e.dataTransfer.setData("Text", txt); + + // Use dummy image instead of default browsers image. + if (gecko || chrome || opera) { + var img = document.createElement('img'); + img.scr = 'data:image/gif;base64,R0lGODdhAgACAIAAAAAAAP///ywAAAAAAgACAAACAoRRADs='; //1x1 image + e.dataTransfer.setDragImage(img, 0, 0); + } + } + + function doHandleBinding(bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) return false; + } + var prevShift = shiftSelecting; + try { + if (options.readOnly) suppressEdits = true; + if (dropShift) shiftSelecting = null; + bound(instance); + } catch(e) { + if (e != Pass) throw e; + return false; + } finally { + shiftSelecting = prevShift; + suppressEdits = false; + } + return true; + } + function handleKeyBinding(e) { + // Handle auto keymap transitions + var startMap = getKeyMap(options.keyMap), next = startMap.auto; + clearTimeout(maybeTransition); + if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { + if (getKeyMap(options.keyMap) == startMap) { + options.keyMap = (next.call ? next.call(null, instance) : next); + } + }, 50); + + var name = keyNames[e_prop(e, "keyCode")], handled = false; + if (name == null || e.altGraphKey) return false; + if (e_prop(e, "altKey")) name = "Alt-" + name; + if (e_prop(e, "ctrlKey")) name = "Ctrl-" + name; + if (e_prop(e, "metaKey")) name = "Cmd-" + name; + + var stopped = false; + function stop() { stopped = true; } + + if (e_prop(e, "shiftKey")) { + handled = lookupKey("Shift-" + name, options.extraKeys, options.keyMap, + function(b) {return doHandleBinding(b, true);}, stop) + || lookupKey(name, options.extraKeys, options.keyMap, function(b) { + if (typeof b == "string" && /^go[A-Z]/.test(b)) return doHandleBinding(b); + }, stop); + } else { + handled = lookupKey(name, options.extraKeys, options.keyMap, doHandleBinding, stop); + } + if (stopped) handled = false; + if (handled) { + e_preventDefault(e); + restartBlink(); + if (ie) { e.oldKeyCode = e.keyCode; e.keyCode = 0; } + } + return handled; + } + function handleCharBinding(e, ch) { + var handled = lookupKey("'" + ch + "'", options.extraKeys, + options.keyMap, function(b) { return doHandleBinding(b, true); }); + if (handled) { + e_preventDefault(e); + restartBlink(); + } + return handled; + } + + var lastStoppedKey = null, maybeTransition; + function onKeyDown(e) { + if (!focused) onFocus(); + if (ie && e.keyCode == 27) { e.returnValue = false; } + if (pollingFast) { if (readInput()) pollingFast = false; } + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + var code = e_prop(e, "keyCode"); + // IE does strange things with escape. + setShift(code == 16 || e_prop(e, "shiftKey")); + // First give onKeyEvent option a chance to handle this. + var handled = handleKeyBinding(e); + if (opera) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && e_prop(e, mac ? "metaKey" : "ctrlKey")) + replaceSelection(""); + } + } + function onKeyPress(e) { + if (pollingFast) readInput(); + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + var keyCode = e_prop(e, "keyCode"), charCode = e_prop(e, "charCode"); + if (opera && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} + if (((opera && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + if (options.electricChars && mode.electricChars && options.smartIndent && !options.readOnly) { + if (mode.electricChars.indexOf(ch) > -1) + setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 75); + } + if (handleCharBinding(e, ch)) return; + fastPoll(); + } + function onKeyUp(e) { + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + if (e_prop(e, "keyCode") == 16) shiftSelecting = null; + } + + function onFocus() { + if (options.readOnly == "nocursor") return; + if (!focused) { + if (options.onFocus) options.onFocus(instance); + focused = true; + if (scroller.className.search(/\bCodeMirror-focused\b/) == -1) + scroller.className += " CodeMirror-focused"; + if (!leaveInputAlone) resetInput(true); + } + slowPoll(); + restartBlink(); + } + function onBlur() { + if (focused) { + if (options.onBlur) options.onBlur(instance); + focused = false; + if (bracketHighlighted) + operation(function(){ + if (bracketHighlighted) { bracketHighlighted(); bracketHighlighted = null; } + })(); + scroller.className = scroller.className.replace(" CodeMirror-focused", ""); + } + clearInterval(blinker); + setTimeout(function() {if (!focused) shiftSelecting = null;}, 150); + } + + function chopDelta(delta) { + // Make sure we always scroll a little bit for any nonzero delta. + if (delta > 0.0 && delta < 1.0) return 1; + else if (delta > -1.0 && delta < 0.0) return -1; + else return Math.round(delta); + } + + function onMouseWheel(e) { + var deltaX = 0, deltaY = 0; + if (e.type == "DOMMouseScroll") { // Firefox + var delta = -e.detail * 8.0; + if (e.axis == e.HORIZONTAL_AXIS) deltaX = delta; + else if (e.axis == e.VERTICAL_AXIS) deltaY = delta; + } else if (e.wheelDeltaX !== undefined && e.wheelDeltaY !== undefined) { // WebKit + deltaX = e.wheelDeltaX / 3.0; + deltaY = e.wheelDeltaY / 3.0; + } else if (e.wheelDelta !== undefined) { // IE or Opera + deltaY = e.wheelDelta / 3.0; + } + + var scrolled = false; + deltaX = chopDelta(deltaX); + deltaY = chopDelta(deltaY); + if ((deltaX > 0 && scroller.scrollLeft > 0) || + (deltaX < 0 && scroller.scrollLeft + scroller.clientWidth < scroller.scrollWidth)) { + scroller.scrollLeft -= deltaX; + scrolled = true; + } + if ((deltaY > 0 && scrollbar.scrollTop > 0) || + (deltaY < 0 && scrollbar.scrollTop + scrollbar.clientHeight < scrollbar.scrollHeight)) { + scrollbar.scrollTop -= deltaY; + scrolled = true; + } + if (scrolled) e_stop(e); + } + + // Replace the range from from to to by the strings in newText. + // Afterwards, set the selection to selFrom, selTo. + function updateLines(from, to, newText, selFrom, selTo) { + if (suppressEdits) return; + if (history) { + var old = []; + doc.iter(from.line, to.line + 1, function(line) { old.push(line.text); }); + history.addChange(from.line, newText.length, old); + while (history.done.length > options.undoDepth) history.done.shift(); + } + updateLinesNoUndo(from, to, newText, selFrom, selTo); + } + function unredoHelper(from, to) { + if (!from.length) return; + var set = from.pop(), out = []; + for (var i = set.length - 1; i >= 0; i -= 1) { + var change = set[i]; + var replaced = [], end = change.start + change.added; + doc.iter(change.start, end, function(line) { replaced.push(line.text); }); + out.push({start: change.start, added: change.old.length, old: replaced}); + var pos = {line: change.start + change.old.length - 1, + ch: editEnd(replaced[replaced.length-1], change.old[change.old.length-1])}; + updateLinesNoUndo({line: change.start, ch: 0}, {line: end - 1, ch: getLine(end-1).text.length}, change.old, pos, pos); + } + updateInput = true; + to.push(out); + } + function undo() {unredoHelper(history.done, history.undone);} + function redo() {unredoHelper(history.undone, history.done);} + + function updateLinesNoUndo(from, to, newText, selFrom, selTo) { + if (suppressEdits) return; + var recomputeMaxLength = false, maxLineLength = maxLine.length; + if (!options.lineWrapping) + doc.iter(from.line, to.line + 1, function(line) { + if (!line.hidden && line.text.length == maxLineLength) {recomputeMaxLength = true; return true;} + }); + if (from.line != to.line || newText.length > 1) gutterDirty = true; + + var nlines = to.line - from.line, firstLine = getLine(from.line), lastLine = getLine(to.line); + // First adjust the line structure, taking some care to leave highlighting intact. + if (from.ch == 0 && to.ch == 0 && newText[newText.length - 1] == "") { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = [], prevLine = null; + if (from.line) { + prevLine = getLine(from.line - 1); + prevLine.fixMarkEnds(lastLine); + } else lastLine.fixMarkStarts(); + for (var i = 0, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], prevLine)); + if (nlines) doc.remove(from.line, nlines, callbacks); + if (added.length) doc.insert(from.line, added); + } else if (firstLine == lastLine) { + if (newText.length == 1) + firstLine.replace(from.ch, to.ch, newText[0]); + else { + lastLine = firstLine.split(to.ch, newText[newText.length-1]); + firstLine.replace(from.ch, null, newText[0]); + firstLine.fixMarkEnds(lastLine); + var added = []; + for (var i = 1, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], firstLine)); + added.push(lastLine); + doc.insert(from.line + 1, added); + } + } else if (newText.length == 1) { + firstLine.replace(from.ch, null, newText[0]); + lastLine.replace(null, to.ch, ""); + firstLine.append(lastLine); + doc.remove(from.line + 1, nlines, callbacks); + } else { + var added = []; + firstLine.replace(from.ch, null, newText[0]); + lastLine.replace(null, to.ch, newText[newText.length-1]); + firstLine.fixMarkEnds(lastLine); + for (var i = 1, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], firstLine)); + if (nlines > 1) doc.remove(from.line + 1, nlines - 1, callbacks); + doc.insert(from.line + 1, added); + } + if (options.lineWrapping) { + var perLine = Math.max(5, scroller.clientWidth / charWidth() - 3); + doc.iter(from.line, from.line + newText.length, function(line) { + if (line.hidden) return; + var guess = Math.ceil(line.text.length / perLine) || 1; + if (guess != line.height) updateLineHeight(line, guess); + }); + } else { + doc.iter(from.line, from.line + newText.length, function(line) { + var l = line.text; + if (!line.hidden && l.length > maxLineLength) { + maxLine = l; maxLineLength = l.length; maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) updateMaxLine = true; + } + + // Add these lines to the work array, so that they will be + // highlighted. Adjust work lines if lines were added/removed. + var newWork = [], lendiff = newText.length - nlines - 1; + for (var i = 0, l = work.length; i < l; ++i) { + var task = work[i]; + if (task < from.line) newWork.push(task); + else if (task > to.line) newWork.push(task + lendiff); + } + var hlEnd = from.line + Math.min(newText.length, 500); + highlightLines(from.line, hlEnd); + newWork.push(hlEnd); + work = newWork; + startWorker(100); + // Remember that these lines changed, for updating the display + changes.push({from: from.line, to: to.line + 1, diff: lendiff}); + var changeObj = {from: from, to: to, text: newText}; + if (textChanged) { + for (var cur = textChanged; cur.next; cur = cur.next) {} + cur.next = changeObj; + } else textChanged = changeObj; + + // Update the selection + function updateLine(n) {return n <= Math.min(to.line, to.line + lendiff) ? n : n + lendiff;} + setSelection(clipPos(selFrom), clipPos(selTo), + updateLine(sel.from.line), updateLine(sel.to.line)); + } + + function needsScrollbar() { + var realHeight = doc.height * textHeight() + 2 * paddingTop(); + return realHeight - 1 > scroller.offsetHeight ? realHeight : false; + } + + function updateVerticalScroll(scrollTop) { + var scrollHeight = needsScrollbar(); + scrollbar.style.display = scrollHeight ? "block" : "none"; + if (scrollHeight) { + scrollbarInner.style.height = scrollHeight + "px"; + scrollbar.style.height = scroller.offsetHeight + "px"; + if (scrollTop != null) scrollbar.scrollTop = scrollTop; + } + // Position the mover div to align with the current virtual scroll position + mover.style.top = (displayOffset * textHeight() - scrollbar.scrollTop) + "px"; + } + + // On Mac OS X Lion and up, detect whether the mouse is plugged in by measuring + // the width of a div with a scrollbar in it. If the width is <= 1, then + // the mouse isn't plugged in and scrollbars should overlap the content. + function overlapScrollbars() { + var tmpSb = document.createElement('div'), + tmpSbInner = document.createElement('div'); + tmpSb.className = "CodeMirror-scrollbar"; + tmpSb.style.cssText = "position: absolute; left: -9999px; height: 100px;"; + tmpSbInner.className = "CodeMirror-scrollbar-inner"; + tmpSbInner.style.height = "200px"; + tmpSb.appendChild(tmpSbInner); + + document.body.appendChild(tmpSb); + var result = (tmpSb.offsetWidth <= 1); + document.body.removeChild(tmpSb); + return result; + } + + function computeMaxLength() { + var maxLineLength = 0; + maxLine = ""; maxLineChanged = true; + doc.iter(0, doc.size, function(line) { + var l = line.text; + if (!line.hidden && l.length > maxLineLength) { + maxLineLength = l.length; maxLine = l; + } + }); + updateMaxLine = false; + } + + function replaceRange(code, from, to) { + from = clipPos(from); + if (!to) to = from; else to = clipPos(to); + code = splitLines(code); + function adjustPos(pos) { + if (posLess(pos, from)) return pos; + if (!posLess(to, pos)) return end; + var line = pos.line + code.length - (to.line - from.line) - 1; + var ch = pos.ch; + if (pos.line == to.line) + ch += code[code.length-1].length - (to.ch - (to.line == from.line ? from.ch : 0)); + return {line: line, ch: ch}; + } + var end; + replaceRange1(code, from, to, function(end1) { + end = end1; + return {from: adjustPos(sel.from), to: adjustPos(sel.to)}; + }); + return end; + } + function replaceSelection(code, collapse) { + replaceRange1(splitLines(code), sel.from, sel.to, function(end) { + if (collapse == "end") return {from: end, to: end}; + else if (collapse == "start") return {from: sel.from, to: sel.from}; + else return {from: sel.from, to: end}; + }); + } + function replaceRange1(code, from, to, computeSel) { + var endch = code.length == 1 ? code[0].length + from.ch : code[code.length-1].length; + var newSel = computeSel({line: from.line + code.length - 1, ch: endch}); + updateLines(from, to, code, newSel.from, newSel.to); + } + + function getRange(from, to, lineSep) { + var l1 = from.line, l2 = to.line; + if (l1 == l2) return getLine(l1).text.slice(from.ch, to.ch); + var code = [getLine(l1).text.slice(from.ch)]; + doc.iter(l1 + 1, l2, function(line) { code.push(line.text); }); + code.push(getLine(l2).text.slice(0, to.ch)); + return code.join(lineSep || "\n"); + } + function getSelection(lineSep) { + return getRange(sel.from, sel.to, lineSep); + } + + var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll + function slowPoll() { + if (pollingFast) return; + poll.set(options.pollInterval, function() { + startOperation(); + readInput(); + if (focused) slowPoll(); + endOperation(); + }); + } + function fastPoll() { + var missed = false; + pollingFast = true; + function p() { + startOperation(); + var changed = readInput(); + if (!changed && !missed) {missed = true; poll.set(60, p);} + else {pollingFast = false; slowPoll();} + endOperation(); + } + poll.set(20, p); + } + + // Previnput is a hack to work with IME. If we reset the textarea + // on every change, that breaks IME. So we look for changes + // compared to the previous content instead. (Modern browsers have + // events that indicate IME taking place, but these are not widely + // supported or compatible enough yet to rely on.) + var prevInput = ""; + function readInput() { + if (leaveInputAlone || !focused || hasSelection(input) || options.readOnly) return false; + var text = input.value; + if (text == prevInput) return false; + shiftSelecting = null; + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput[same] == text[same]) ++same; + if (same < prevInput.length) + sel.from = {line: sel.from.line, ch: sel.from.ch - (prevInput.length - same)}; + else if (overwrite && posEq(sel.from, sel.to)) + sel.to = {line: sel.to.line, ch: Math.min(getLine(sel.to.line).text.length, sel.to.ch + (text.length - same))}; + replaceSelection(text.slice(same), "end"); + if (text.length > 1000) { input.value = prevInput = ""; } + else prevInput = text; + return true; + } + function resetInput(user) { + if (!posEq(sel.from, sel.to)) { + prevInput = ""; + input.value = getSelection(); + selectInput(input); + } else if (user) prevInput = input.value = ""; + } + + function focusInput() { + if (options.readOnly != "nocursor") input.focus(); + } + + function scrollEditorIntoView() { + var rect = cursor.getBoundingClientRect(); + // IE returns bogus coordinates when the instance sits inside of an iframe and the cursor is hidden + if (ie && rect.top == rect.bottom) return; + var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight); + if (rect.top < 0 || rect.bottom > winH) scrollCursorIntoView(); + } + function scrollCursorIntoView() { + var coords = calculateCursorCoords(); + return scrollIntoView(coords.x, coords.y, coords.x, coords.yBot); + } + function calculateCursorCoords() { + var cursor = localCoords(sel.inverted ? sel.from : sel.to); + var x = options.lineWrapping ? Math.min(cursor.x, lineSpace.offsetWidth) : cursor.x; + return {x: x, y: cursor.y, yBot: cursor.yBot}; + } + function scrollIntoView(x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(x1, y1, x2, y2), scrolled = false; + if (scrollPos.scrollLeft != null) {scroller.scrollLeft = scrollPos.scrollLeft; scrolled = true;} + if (scrollPos.scrollTop != null) {scrollbar.scrollTop = scrollPos.scrollTop; scrolled = true;} + if (scrolled && options.onScroll) options.onScroll(instance); + } + function calculateScrollPos(x1, y1, x2, y2) { + var pl = paddingLeft(), pt = paddingTop(); + y1 += pt; y2 += pt; x1 += pl; x2 += pl; + var screen = scroller.clientHeight, screentop = scrollbar.scrollTop, result = {}; + var docBottom = scroller.scrollHeight; + var atTop = y1 < pt + 10, atBottom = y2 + pt > docBottom - 10;; + if (y1 < screentop) result.scrollTop = atTop ? 0 : Math.max(0, y1); + else if (y2 > screentop + screen) result.scrollTop = (atBottom ? docBottom : y2) - screen; + + var screenw = scroller.clientWidth, screenleft = scroller.scrollLeft; + var gutterw = options.fixedGutter ? gutter.clientWidth : 0; + var atLeft = x1 < gutterw + pl + 10; + if (x1 < screenleft + gutterw || atLeft) { + if (atLeft) x1 = 0; + result.scrollLeft = Math.max(0, x1 - 10 - gutterw); + } else if (x2 > screenw + screenleft - 3) { + result.scrollLeft = x2 + 10 - screenw; + } + return result; + } + + function visibleLines(scrollTop) { + var lh = textHeight(), top = (scrollTop != null ? scrollTop : scrollbar.scrollTop) - paddingTop(); + var fromHeight = Math.max(0, Math.floor(top / lh)); + var toHeight = Math.ceil((top + scroller.clientHeight) / lh); + return {from: lineAtHeight(doc, fromHeight), + to: lineAtHeight(doc, toHeight)}; + } + // Uses a set of changes plus the current scroll position to + // determine which DOM updates have to be made, and makes the + // updates. + function updateDisplay(changes, suppressCallback, scrollTop) { + if (!scroller.clientWidth) { + showingFrom = showingTo = displayOffset = 0; + return; + } + // Compute the new visible window + // If scrollTop is specified, use that to determine which lines + // to render instead of the current scrollbar position. + var visible = visibleLines(scrollTop); + // Bail out if the visible area is already rendered and nothing changed. + if (changes !== true && changes.length == 0 && visible.from > showingFrom && visible.to < showingTo) { + updateVerticalScroll(scrollTop); + return; + } + var from = Math.max(visible.from - 100, 0), to = Math.min(doc.size, visible.to + 100); + if (showingFrom < from && from - showingFrom < 20) from = showingFrom; + if (showingTo > to && showingTo - to < 20) to = Math.min(doc.size, showingTo); + + // Create a range of theoretically intact lines, and punch holes + // in that using the change info. + var intact = changes === true ? [] : + computeIntact([{from: showingFrom, to: showingTo, domStart: 0}], changes); + // Clip off the parts that won't be visible + var intactLines = 0; + for (var i = 0; i < intact.length; ++i) { + var range = intact[i]; + if (range.from < from) {range.domStart += (from - range.from); range.from = from;} + if (range.to > to) range.to = to; + if (range.from >= range.to) intact.splice(i--, 1); + else intactLines += range.to - range.from; + } + if (intactLines == to - from && from == showingFrom && to == showingTo) { + updateVerticalScroll(scrollTop); + return; + } + intact.sort(function(a, b) {return a.domStart - b.domStart;}); + + var th = textHeight(), gutterDisplay = gutter.style.display; + lineDiv.style.display = "none"; + patchDisplay(from, to, intact); + lineDiv.style.display = gutter.style.display = ""; + + var different = from != showingFrom || to != showingTo || lastSizeC != scroller.clientHeight + th; + // This is just a bogus formula that detects when the editor is + // resized or the font size changes. + if (different) lastSizeC = scroller.clientHeight + th; + showingFrom = from; showingTo = to; + displayOffset = heightAtLine(doc, from); + + // Since this is all rather error prone, it is honoured with the + // only assertion in the whole file. + if (lineDiv.childNodes.length != showingTo - showingFrom) + throw new Error("BAD PATCH! " + JSON.stringify(intact) + " size=" + (showingTo - showingFrom) + + " nodes=" + lineDiv.childNodes.length); + + function checkHeights() { + var curNode = lineDiv.firstChild, heightChanged = false; + doc.iter(showingFrom, showingTo, function(line) { + if (!line.hidden) { + var height = Math.round(curNode.offsetHeight / th) || 1; + if (line.height != height) { + updateLineHeight(line, height); + gutterDirty = heightChanged = true; + } + } + curNode = curNode.nextSibling; + }); + return heightChanged; + } + + if (options.lineWrapping) { + checkHeights(); + var scrollHeight = needsScrollbar(); + var shouldHaveScrollbar = scrollHeight ? "block" : "none"; + if (scrollbar.style.display != shouldHaveScrollbar) { + scrollbar.style.display = shouldHaveScrollbar; + if (scrollHeight) scrollbarInner.style.height = scrollHeight + "px"; + checkHeights(); + } + } + + gutter.style.display = gutterDisplay; + if (different || gutterDirty) { + // If the gutter grew in size, re-check heights. If those changed, re-draw gutter. + updateGutter() && options.lineWrapping && checkHeights() && updateGutter(); + } + updateVerticalScroll(scrollTop); + updateSelection(); + if (!suppressCallback && options.onUpdate) options.onUpdate(instance); + return true; + } + + function computeIntact(intact, changes) { + for (var i = 0, l = changes.length || 0; i < l; ++i) { + var change = changes[i], intact2 = [], diff = change.diff || 0; + for (var j = 0, l2 = intact.length; j < l2; ++j) { + var range = intact[j]; + if (change.to <= range.from && change.diff) + intact2.push({from: range.from + diff, to: range.to + diff, + domStart: range.domStart}); + else if (change.to <= range.from || change.from >= range.to) + intact2.push(range); + else { + if (change.from > range.from) + intact2.push({from: range.from, to: change.from, domStart: range.domStart}); + if (change.to < range.to) + intact2.push({from: change.to + diff, to: range.to + diff, + domStart: range.domStart + (change.to - range.from)}); + } + } + intact = intact2; + } + return intact; + } + + function patchDisplay(from, to, intact) { + // The first pass removes the DOM nodes that aren't intact. + if (!intact.length) lineDiv.innerHTML = ""; + else { + function killNode(node) { + var tmp = node.nextSibling; + node.parentNode.removeChild(node); + return tmp; + } + var domPos = 0, curNode = lineDiv.firstChild, n; + for (var i = 0; i < intact.length; ++i) { + var cur = intact[i]; + while (cur.domStart > domPos) {curNode = killNode(curNode); domPos++;} + for (var j = 0, e = cur.to - cur.from; j < e; ++j) {curNode = curNode.nextSibling; domPos++;} + } + while (curNode) curNode = killNode(curNode); + } + // This pass fills in the lines that actually changed. + var nextIntact = intact.shift(), curNode = lineDiv.firstChild, j = from; + var scratch = document.createElement("div"); + doc.iter(from, to, function(line) { + if (nextIntact && nextIntact.to == j) nextIntact = intact.shift(); + if (!nextIntact || nextIntact.from > j) { + if (line.hidden) var html = scratch.innerHTML = "
    ";
    +          else {
    +            var html = ''
    +              + line.getHTML(makeTab) + '
    '; + // Kludge to make sure the styled element lies behind the selection (by z-index) + if (line.bgClassName) + html = '
     
    ' + html + "
    "; + } + scratch.innerHTML = html; + lineDiv.insertBefore(scratch.firstChild, curNode); + } else { + curNode = curNode.nextSibling; + } + ++j; + }); + } + + function updateGutter() { + if (!options.gutter && !options.lineNumbers) return; + var hText = mover.offsetHeight, hEditor = scroller.clientHeight; + gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px"; + var html = [], i = showingFrom, normalNode; + doc.iter(showingFrom, Math.max(showingTo, showingFrom + 1), function(line) { + if (line.hidden) { + html.push("
    ");
    +        } else {
    +          var marker = line.gutterMarker;
    +          var text = options.lineNumbers ? options.lineNumberFormatter(i + options.firstLineNumber) : null;
    +          if (marker && marker.text)
    +            text = marker.text.replace("%N%", text != null ? text : "");
    +          else if (text == null)
    +            text = "\u00a0";
    +          html.push((marker && marker.style ? '
    ' : "
    "), text);
    +          for (var j = 1; j < line.height; ++j) html.push("
     "); + html.push("
    "); + if (!marker) normalNode = i; + } + ++i; + }); + gutter.style.display = "none"; + gutterText.innerHTML = html.join(""); + // Make sure scrolling doesn't cause number gutter size to pop + if (normalNode != null && options.lineNumbers) { + var node = gutterText.childNodes[normalNode - showingFrom]; + var minwidth = String(doc.size).length, val = eltText(node.firstChild), pad = ""; + while (val.length + pad.length < minwidth) pad += "\u00a0"; + if (pad) node.insertBefore(document.createTextNode(pad), node.firstChild); + } + gutter.style.display = ""; + var resized = Math.abs((parseInt(lineSpace.style.marginLeft) || 0) - gutter.offsetWidth) > 2; + lineSpace.style.marginLeft = gutter.offsetWidth + "px"; + gutterDirty = false; + return resized; + } + function updateSelection() { + var collapsed = posEq(sel.from, sel.to); + var fromPos = localCoords(sel.from, true); + var toPos = collapsed ? fromPos : localCoords(sel.to, true); + var headPos = sel.inverted ? fromPos : toPos, th = textHeight(); + var wrapOff = eltOffset(wrapper), lineOff = eltOffset(lineDiv); + inputDiv.style.top = Math.max(0, Math.min(scroller.offsetHeight, headPos.y + lineOff.top - wrapOff.top)) + "px"; + inputDiv.style.left = Math.max(0, Math.min(scroller.offsetWidth, headPos.x + lineOff.left - wrapOff.left)) + "px"; + if (collapsed) { + cursor.style.top = headPos.y + "px"; + cursor.style.left = (options.lineWrapping ? Math.min(headPos.x, lineSpace.offsetWidth) : headPos.x) + "px"; + cursor.style.display = ""; + selectionDiv.style.display = "none"; + } else { + var sameLine = fromPos.y == toPos.y, html = ""; + var clientWidth = lineSpace.clientWidth || lineSpace.offsetWidth; + var clientHeight = lineSpace.clientHeight || lineSpace.offsetHeight; + function add(left, top, right, height) { + var rstyle = quirksMode ? "width: " + (!right ? clientWidth : clientWidth - right - left) + "px" + : "right: " + right + "px"; + html += '
    '; + } + if (sel.from.ch && fromPos.y >= 0) { + var right = sameLine ? clientWidth - toPos.x : 0; + add(fromPos.x, fromPos.y, right, th); + } + var middleStart = Math.max(0, fromPos.y + (sel.from.ch ? th : 0)); + var middleHeight = Math.min(toPos.y, clientHeight) - middleStart; + if (middleHeight > 0.2 * th) + add(0, middleStart, 0, middleHeight); + if ((!sameLine || !sel.from.ch) && toPos.y < clientHeight - .5 * th) + add(0, toPos.y, clientWidth - toPos.x, th); + selectionDiv.innerHTML = html; + cursor.style.display = "none"; + selectionDiv.style.display = ""; + } + } + + function setShift(val) { + if (val) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from); + else shiftSelecting = null; + } + function setSelectionUser(from, to) { + var sh = shiftSelecting && clipPos(shiftSelecting); + if (sh) { + if (posLess(sh, from)) from = sh; + else if (posLess(to, sh)) to = sh; + } + setSelection(from, to); + userSelChange = true; + } + // Update the selection. Last two args are only used by + // updateLines, since they have to be expressed in the line + // numbers before the update. + function setSelection(from, to, oldFrom, oldTo) { + goalColumn = null; + if (oldFrom == null) {oldFrom = sel.from.line; oldTo = sel.to.line;} + if (posEq(sel.from, from) && posEq(sel.to, to)) return; + if (posLess(to, from)) {var tmp = to; to = from; from = tmp;} + + // Skip over hidden lines. + if (from.line != oldFrom) { + var from1 = skipHidden(from, oldFrom, sel.from.ch); + // If there is no non-hidden line left, force visibility on current line + if (!from1) setLineHidden(from.line, false); + else from = from1; + } + if (to.line != oldTo) to = skipHidden(to, oldTo, sel.to.ch); + + if (posEq(from, to)) sel.inverted = false; + else if (posEq(from, sel.to)) sel.inverted = false; + else if (posEq(to, sel.from)) sel.inverted = true; + + if (options.autoClearEmptyLines && posEq(sel.from, sel.to)) { + var head = sel.inverted ? from : to; + if (head.line != sel.from.line && sel.from.line < doc.size) { + var oldLine = getLine(sel.from.line); + if (/^\s+$/.test(oldLine.text)) + setTimeout(operation(function() { + if (oldLine.parent && /^\s+$/.test(oldLine.text)) { + var no = lineNo(oldLine); + replaceRange("", {line: no, ch: 0}, {line: no, ch: oldLine.text.length}); + } + }, 10)); + } + } + + sel.from = from; sel.to = to; + selectionChanged = true; + } + function skipHidden(pos, oldLine, oldCh) { + function getNonHidden(dir) { + var lNo = pos.line + dir, end = dir == 1 ? doc.size : -1; + while (lNo != end) { + var line = getLine(lNo); + if (!line.hidden) { + var ch = pos.ch; + if (toEnd || ch > oldCh || ch > line.text.length) ch = line.text.length; + return {line: lNo, ch: ch}; + } + lNo += dir; + } + } + var line = getLine(pos.line); + var toEnd = pos.ch == line.text.length && pos.ch != oldCh; + if (!line.hidden) return pos; + if (pos.line >= oldLine) return getNonHidden(1) || getNonHidden(-1); + else return getNonHidden(-1) || getNonHidden(1); + } + function setCursor(line, ch, user) { + var pos = clipPos({line: line, ch: ch || 0}); + (user ? setSelectionUser : setSelection)(pos, pos); + } + + function clipLine(n) {return Math.max(0, Math.min(n, doc.size-1));} + function clipPos(pos) { + if (pos.line < 0) return {line: 0, ch: 0}; + if (pos.line >= doc.size) return {line: doc.size-1, ch: getLine(doc.size-1).text.length}; + var ch = pos.ch, linelen = getLine(pos.line).text.length; + if (ch == null || ch > linelen) return {line: pos.line, ch: linelen}; + else if (ch < 0) return {line: pos.line, ch: 0}; + else return pos; + } + + function findPosH(dir, unit) { + var end = sel.inverted ? sel.from : sel.to, line = end.line, ch = end.ch; + var lineObj = getLine(line); + function findNextLine() { + for (var l = line + dir, e = dir < 0 ? -1 : doc.size; l != e; l += dir) { + var lo = getLine(l); + if (!lo.hidden) { line = l; lineObj = lo; return true; } + } + } + function moveOnce(boundToLine) { + if (ch == (dir < 0 ? 0 : lineObj.text.length)) { + if (!boundToLine && findNextLine()) ch = dir < 0 ? lineObj.text.length : 0; + else return false; + } else ch += dir; + return true; + } + if (unit == "char") moveOnce(); + else if (unit == "column") moveOnce(true); + else if (unit == "word") { + var sawWord = false; + for (;;) { + if (dir < 0) if (!moveOnce()) break; + if (isWordChar(lineObj.text.charAt(ch))) sawWord = true; + else if (sawWord) {if (dir < 0) {dir = 1; moveOnce();} break;} + if (dir > 0) if (!moveOnce()) break; + } + } + return {line: line, ch: ch}; + } + function moveH(dir, unit) { + var pos = dir < 0 ? sel.from : sel.to; + if (shiftSelecting || posEq(sel.from, sel.to)) pos = findPosH(dir, unit); + setCursor(pos.line, pos.ch, true); + } + function deleteH(dir, unit) { + if (!posEq(sel.from, sel.to)) replaceRange("", sel.from, sel.to); + else if (dir < 0) replaceRange("", findPosH(dir, unit), sel.to); + else replaceRange("", sel.from, findPosH(dir, unit)); + userSelChange = true; + } + var goalColumn = null; + function moveV(dir, unit) { + var dist = 0, pos = localCoords(sel.inverted ? sel.from : sel.to, true); + if (goalColumn != null) pos.x = goalColumn; + if (unit == "page") dist = Math.min(scroller.clientHeight, window.innerHeight || document.documentElement.clientHeight); + else if (unit == "line") dist = textHeight(); + var target = coordsChar(pos.x, pos.y + dist * dir + 2); + if (unit == "page") scrollbar.scrollTop += localCoords(target, true).y - pos.y; + setCursor(target.line, target.ch, true); + goalColumn = pos.x; + } + + function findWordAt(pos) { + var line = getLine(pos.line).text; + var start = pos.ch, end = pos.ch; + var check = isWordChar(line.charAt(start < line.length ? start : start - 1)) ? + isWordChar : function(ch) {return !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + return {from: {line: pos.line, ch: start}, to: {line: pos.line, ch: end}}; + } + function selectLine(line) { + setSelectionUser({line: line, ch: 0}, clipPos({line: line + 1, ch: 0})); + } + function indentSelected(mode) { + if (posEq(sel.from, sel.to)) return indentLine(sel.from.line, mode); + var e = sel.to.line - (sel.to.ch ? 0 : 1); + for (var i = sel.from.line; i <= e; ++i) indentLine(i, mode); + } + + function indentLine(n, how) { + if (!how) how = "add"; + if (how == "smart") { + if (!mode.indent) how = "prev"; + else var state = getStateBefore(n); + } + + var line = getLine(n), curSpace = line.indentation(options.tabSize), + curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (how == "smart") { + indentation = mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass) how = "prev"; + } + if (how == "prev") { + if (n) indentation = getLine(n-1).indentation(options.tabSize); + else indentation = 0; + } + else if (how == "add") indentation = curSpace + options.indentUnit; + else if (how == "subtract") indentation = curSpace - options.indentUnit; + indentation = Math.max(0, indentation); + var diff = indentation - curSpace; + + var indentString = "", pos = 0; + if (options.indentWithTabs) + for (var i = Math.floor(indentation / options.tabSize); i; --i) {pos += options.tabSize; indentString += "\t";} + while (pos < indentation) {++pos; indentString += " ";} + + replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length}); + } + + function loadMode() { + mode = CodeMirror.getMode(options, options.mode); + doc.iter(0, doc.size, function(line) { line.stateAfter = null; }); + work = [0]; + startWorker(); + } + function gutterChanged() { + var visible = options.gutter || options.lineNumbers; + gutter.style.display = visible ? "" : "none"; + if (visible) gutterDirty = true; + else lineDiv.parentNode.style.marginLeft = 0; + } + function wrappingChanged(from, to) { + if (options.lineWrapping) { + wrapper.className += " CodeMirror-wrap"; + var perLine = scroller.clientWidth / charWidth() - 3; + doc.iter(0, doc.size, function(line) { + if (line.hidden) return; + var guess = Math.ceil(line.text.length / perLine) || 1; + if (guess != 1) updateLineHeight(line, guess); + }); + lineSpace.style.width = code.style.width = ""; + widthForcer.style.left = ""; + } else { + wrapper.className = wrapper.className.replace(" CodeMirror-wrap", ""); + maxLine = ""; maxLineChanged = true; + doc.iter(0, doc.size, function(line) { + if (line.height != 1 && !line.hidden) updateLineHeight(line, 1); + if (line.text.length > maxLine.length) maxLine = line.text; + }); + } + changes.push({from: 0, to: doc.size}); + } + function makeTab(col) { + var w = options.tabSize - col % options.tabSize, cached = tabCache[w]; + if (cached) return cached; + for (var str = '', i = 0; i < w; ++i) str += " "; + return (tabCache[w] = {html: str + "", width: w}); + } + function themeChanged() { + scroller.className = scroller.className.replace(/\s*cm-s-\S+/g, "") + + options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + } + function keyMapChanged() { + var style = keyMap[options.keyMap].style; + wrapper.className = wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + + (style ? " cm-keymap-" + style : ""); + } + + function TextMarker() { this.set = []; } + TextMarker.prototype.clear = operation(function() { + var min = Infinity, max = -Infinity; + for (var i = 0, e = this.set.length; i < e; ++i) { + var line = this.set[i], mk = line.marked; + if (!mk || !line.parent) continue; + var lineN = lineNo(line); + min = Math.min(min, lineN); max = Math.max(max, lineN); + for (var j = 0; j < mk.length; ++j) + if (mk[j].marker == this) mk.splice(j--, 1); + } + if (min != Infinity) + changes.push({from: min, to: max + 1}); + }); + TextMarker.prototype.find = function() { + var from, to; + for (var i = 0, e = this.set.length; i < e; ++i) { + var line = this.set[i], mk = line.marked; + for (var j = 0; j < mk.length; ++j) { + var mark = mk[j]; + if (mark.marker == this) { + if (mark.from != null || mark.to != null) { + var found = lineNo(line); + if (found != null) { + if (mark.from != null) from = {line: found, ch: mark.from}; + if (mark.to != null) to = {line: found, ch: mark.to}; + } + } + } + } + } + return {from: from, to: to}; + }; + + function markText(from, to, className) { + from = clipPos(from); to = clipPos(to); + var tm = new TextMarker(); + if (!posLess(from, to)) return tm; + function add(line, from, to, className) { + getLine(line).addMark(new MarkedText(from, to, className, tm)); + } + if (from.line == to.line) add(from.line, from.ch, to.ch, className); + else { + add(from.line, from.ch, null, className); + for (var i = from.line + 1, e = to.line; i < e; ++i) + add(i, null, null, className); + add(to.line, null, to.ch, className); + } + changes.push({from: from.line, to: to.line + 1}); + return tm; + } + + function setBookmark(pos) { + pos = clipPos(pos); + var bm = new Bookmark(pos.ch); + getLine(pos.line).addMark(bm); + return bm; + } + + function findMarksAt(pos) { + pos = clipPos(pos); + var markers = [], marked = getLine(pos.line).marked; + if (!marked) return markers; + for (var i = 0, e = marked.length; i < e; ++i) { + var m = marked[i]; + if ((m.from == null || m.from <= pos.ch) && + (m.to == null || m.to >= pos.ch)) + markers.push(m.marker || m); + } + return markers; + } + + function addGutterMarker(line, text, className) { + if (typeof line == "number") line = getLine(clipLine(line)); + line.gutterMarker = {text: text, style: className}; + gutterDirty = true; + return line; + } + function removeGutterMarker(line) { + if (typeof line == "number") line = getLine(clipLine(line)); + line.gutterMarker = null; + gutterDirty = true; + } + + function changeLine(handle, op) { + var no = handle, line = handle; + if (typeof handle == "number") line = getLine(clipLine(handle)); + else no = lineNo(handle); + if (no == null) return null; + if (op(line, no)) changes.push({from: no, to: no + 1}); + else return null; + return line; + } + function setLineClass(handle, className, bgClassName) { + return changeLine(handle, function(line) { + if (line.className != className || line.bgClassName != bgClassName) { + line.className = className; + line.bgClassName = bgClassName; + return true; + } + }); + } + function setLineHidden(handle, hidden) { + return changeLine(handle, function(line, no) { + if (line.hidden != hidden) { + line.hidden = hidden; + if (!options.lineWrapping) { + var l = line.text; + if (hidden && l.length == maxLine.length) { + updateMaxLine = true; + } else if (!hidden && l.length > maxLine.length) { + maxLine = l; updateMaxLine = false; + } + } + updateLineHeight(line, hidden ? 0 : 1); + var fline = sel.from.line, tline = sel.to.line; + if (hidden && (fline == no || tline == no)) { + var from = fline == no ? skipHidden({line: fline, ch: 0}, fline, 0) : sel.from; + var to = tline == no ? skipHidden({line: tline, ch: 0}, tline, 0) : sel.to; + // Can't hide the last visible line, we'd have no place to put the cursor + if (!to) return; + setSelection(from, to); + } + return (gutterDirty = true); + } + }); + } + + function lineInfo(line) { + if (typeof line == "number") { + if (!isLine(line)) return null; + var n = line; + line = getLine(line); + if (!line) return null; + } else { + var n = lineNo(line); + if (n == null) return null; + } + var marker = line.gutterMarker; + return {line: n, handle: line, text: line.text, markerText: marker && marker.text, + markerClass: marker && marker.style, lineClass: line.className, bgClass: line.bgClassName}; + } + + function stringWidth(str) { + measure.innerHTML = "
    x
    "; + measure.firstChild.firstChild.firstChild.nodeValue = str; + return measure.firstChild.firstChild.offsetWidth || 10; + } + // These are used to go from pixel positions to character + // positions, taking varying character widths into account. + function charFromX(line, x) { + if (x <= 0) return 0; + var lineObj = getLine(line), text = lineObj.text; + function getX(len) { + return measureLine(lineObj, len).left; + } + var from = 0, fromX = 0, to = text.length, toX; + // Guess a suitable upper bound for our search. + var estimated = Math.min(to, Math.ceil(x / charWidth())); + for (;;) { + var estX = getX(estimated); + if (estX <= x && estimated < to) estimated = Math.min(to, Math.ceil(estimated * 1.2)); + else {toX = estX; to = estimated; break;} + } + if (x > toX) return to; + // Try to guess a suitable lower bound as well. + estimated = Math.floor(to * 0.8); estX = getX(estimated); + if (estX < x) {from = estimated; fromX = estX;} + // Do a binary search between these bounds. + for (;;) { + if (to - from <= 1) return (toX - x > x - fromX) ? from : to; + var middle = Math.ceil((from + to) / 2), middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX;} + else {from = middle; fromX = middleX;} + } + } + + var tempId = "CodeMirror-temp-" + Math.floor(Math.random() * 0xffffff).toString(16); + function measureLine(line, ch) { + if (ch == 0) return {top: 0, left: 0}; + var wbr = options.lineWrapping && ch < line.text.length && + spanAffectsWrapping.test(line.text.slice(ch - 1, ch + 1)); + measure.innerHTML = "
    " + line.getHTML(makeTab, ch, tempId, wbr) + "
    "; + var elt = document.getElementById(tempId); + var top = elt.offsetTop, left = elt.offsetLeft; + // Older IEs report zero offsets for spans directly after a wrap + if (ie && top == 0 && left == 0) { + var backup = document.createElement("span"); + backup.innerHTML = "x"; + elt.parentNode.insertBefore(backup, elt.nextSibling); + top = backup.offsetTop; + } + return {top: top, left: left}; + } + function localCoords(pos, inLineWrap) { + var x, lh = textHeight(), y = lh * (heightAtLine(doc, pos.line) - (inLineWrap ? displayOffset : 0)); + if (pos.ch == 0) x = 0; + else { + var sp = measureLine(getLine(pos.line), pos.ch); + x = sp.left; + if (options.lineWrapping) y += Math.max(0, sp.top); + } + return {x: x, y: y, yBot: y + lh}; + } + // Coords must be lineSpace-local + function coordsChar(x, y) { + if (y < 0) return {line: 0, ch: 0}; + var th = textHeight(), cw = charWidth(), heightPos = displayOffset + Math.floor(y / th); + var lineNo = lineAtHeight(doc, heightPos); + if (lineNo >= doc.size) return {line: doc.size - 1, ch: getLine(doc.size - 1).text.length}; + var lineObj = getLine(lineNo), text = lineObj.text; + var tw = options.lineWrapping, innerOff = tw ? heightPos - heightAtLine(doc, lineNo) : 0; + if (x <= 0 && innerOff == 0) return {line: lineNo, ch: 0}; + function getX(len) { + var sp = measureLine(lineObj, len); + if (tw) { + var off = Math.round(sp.top / th); + return Math.max(0, sp.left + (off - innerOff) * scroller.clientWidth); + } + return sp.left; + } + var from = 0, fromX = 0, to = text.length, toX; + // Guess a suitable upper bound for our search. + var estimated = Math.min(to, Math.ceil((x + innerOff * scroller.clientWidth * .9) / cw)); + for (;;) { + var estX = getX(estimated); + if (estX <= x && estimated < to) estimated = Math.min(to, Math.ceil(estimated * 1.2)); + else {toX = estX; to = estimated; break;} + } + if (x > toX) return {line: lineNo, ch: to}; + // Try to guess a suitable lower bound as well. + estimated = Math.floor(to * 0.8); estX = getX(estimated); + if (estX < x) {from = estimated; fromX = estX;} + // Do a binary search between these bounds. + for (;;) { + if (to - from <= 1) return {line: lineNo, ch: (toX - x > x - fromX) ? from : to}; + var middle = Math.ceil((from + to) / 2), middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX;} + else {from = middle; fromX = middleX;} + } + } + function pageCoords(pos) { + var local = localCoords(pos, true), off = eltOffset(lineSpace); + return {x: off.left + local.x, y: off.top + local.y, yBot: off.top + local.yBot}; + } + + var cachedHeight, cachedHeightFor, measureText; + function textHeight() { + if (measureText == null) { + measureText = "
    ";
    +        for (var i = 0; i < 49; ++i) measureText += "x
    "; + measureText += "x
    "; + } + var offsetHeight = lineDiv.clientHeight; + if (offsetHeight == cachedHeightFor) return cachedHeight; + cachedHeightFor = offsetHeight; + measure.innerHTML = measureText; + cachedHeight = measure.firstChild.offsetHeight / 50 || 1; + measure.innerHTML = ""; + return cachedHeight; + } + var cachedWidth, cachedWidthFor = 0; + function charWidth() { + if (scroller.clientWidth == cachedWidthFor) return cachedWidth; + cachedWidthFor = scroller.clientWidth; + return (cachedWidth = stringWidth("x")); + } + function paddingTop() {return lineSpace.offsetTop;} + function paddingLeft() {return lineSpace.offsetLeft;} + + function posFromMouse(e, liberal) { + var offW = eltOffset(scroller, true), x, y; + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX; y = e.clientY; } catch (e) { return null; } + // This is a mess of a heuristic to try and determine whether a + // scroll-bar was clicked or not, and to return null if one was + // (and !liberal). + if (!liberal && (x - offW.left > scroller.clientWidth || y - offW.top > scroller.clientHeight)) + return null; + var offL = eltOffset(lineSpace, true); + return coordsChar(x - offL.left, y - offL.top); + } + function onContextMenu(e) { + var pos = posFromMouse(e), scrollPos = scrollbar.scrollTop; + if (!pos || opera) return; // Opera is difficult. + if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)) + operation(setCursor)(pos.line, pos.ch); + + var oldCSS = input.style.cssText; + inputDiv.style.position = "absolute"; + input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + + "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: white; " + + "border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + leaveInputAlone = true; + var val = input.value = getSelection(); + focusInput(); + selectInput(input); + function rehide() { + var newVal = splitLines(input.value).join("\n"); + if (newVal != val && !options.readOnly) operation(replaceSelection)(newVal, "end"); + inputDiv.style.position = "relative"; + input.style.cssText = oldCSS; + if (ie_lt9) scrollbar.scrollTop = scrollPos; + leaveInputAlone = false; + resetInput(true); + slowPoll(); + } + + if (gecko) { + e_stop(e); + var mouseup = connect(window, "mouseup", function() { + mouseup(); + setTimeout(rehide, 20); + }, true); + } else { + setTimeout(rehide, 50); + } + } + + // Cursor-blinking + function restartBlink() { + clearInterval(blinker); + var on = true; + cursor.style.visibility = ""; + blinker = setInterval(function() { + cursor.style.visibility = (on = !on) ? "" : "hidden"; + }, 650); + } + + var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; + function matchBrackets(autoclear) { + var head = sel.inverted ? sel.from : sel.to, line = getLine(head.line), pos = head.ch - 1; + var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)]; + if (!match) return; + var ch = match.charAt(0), forward = match.charAt(1) == ">", d = forward ? 1 : -1, st = line.styles; + for (var off = pos + 1, i = 0, e = st.length; i < e; i+=2) + if ((off -= st[i].length) <= 0) {var style = st[i+1]; break;} + + var stack = [line.text.charAt(pos)], re = /[(){}[\]]/; + function scan(line, from, to) { + if (!line.text) return; + var st = line.styles, pos = forward ? 0 : line.text.length - 1, cur; + for (var i = forward ? 0 : st.length - 2, e = forward ? st.length : -2; i != e; i += 2*d) { + var text = st[i]; + if (st[i+1] != style) {pos += d * text.length; continue;} + for (var j = forward ? 0 : text.length - 1, te = forward ? text.length : -1; j != te; j += d, pos+=d) { + if (pos >= from && pos < to && re.test(cur = text.charAt(j))) { + var match = matching[cur]; + if (match.charAt(1) == ">" == forward) stack.push(cur); + else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false}; + else if (!stack.length) return {pos: pos, match: true}; + } + } + } + } + for (var i = head.line, e = forward ? Math.min(i + 100, doc.size) : Math.max(-1, i - 100); i != e; i+=d) { + var line = getLine(i), first = i == head.line; + var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length); + if (found) break; + } + if (!found) found = {pos: null, match: false}; + var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style), + two = found.pos != null && markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style); + var clear = operation(function(){one.clear(); two && two.clear();}); + if (autoclear) setTimeout(clear, 800); + else bracketHighlighted = clear; + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(n) { + var minindent, minline; + for (var search = n, lim = n - 40; search > lim; --search) { + if (search == 0) return 0; + var line = getLine(search-1); + if (line.stateAfter) return search; + var indented = line.indentation(options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline; + } + function getStateBefore(n) { + var start = findStartLine(n), state = start && getLine(start-1).stateAfter; + if (!state) state = startState(mode); + else state = copyState(mode, state); + doc.iter(start, n, function(line) { + line.highlight(mode, state, options.tabSize); + line.stateAfter = copyState(mode, state); + }); + if (start < n) changes.push({from: start, to: n}); + if (n < doc.size && !getLine(n).stateAfter) work.push(n); + return state; + } + function highlightLines(start, end) { + var state = getStateBefore(start); + doc.iter(start, end, function(line) { + line.highlight(mode, state, options.tabSize); + line.stateAfter = copyState(mode, state); + }); + } + function highlightWorker() { + var end = +new Date + options.workTime; + var foundWork = work.length; + while (work.length) { + if (!getLine(showingFrom).stateAfter) var task = showingFrom; + else var task = work.pop(); + if (task >= doc.size) continue; + var start = findStartLine(task), state = start && getLine(start-1).stateAfter; + if (state) state = copyState(mode, state); + else state = startState(mode); + + var unchanged = 0, compare = mode.compareStates, realChange = false, + i = start, bail = false; + doc.iter(i, doc.size, function(line) { + var hadState = line.stateAfter; + if (+new Date > end) { + work.push(i); + startWorker(options.workDelay); + if (realChange) changes.push({from: task, to: i + 1}); + return (bail = true); + } + var changed = line.highlight(mode, state, options.tabSize); + if (changed) realChange = true; + line.stateAfter = copyState(mode, state); + var done = null; + if (compare) { + var same = hadState && compare(hadState, state); + if (same != Pass) done = !!same; + } + if (done == null) { + if (changed !== false || !hadState) unchanged = 0; + else if (++unchanged > 3 && (!mode.indent || mode.indent(hadState, "") == mode.indent(state, ""))) + done = true; + } + if (done) return true; + ++i; + }); + if (bail) return; + if (realChange) changes.push({from: task, to: i + 1}); + } + if (foundWork && options.onHighlightComplete) + options.onHighlightComplete(instance); + } + function startWorker(time) { + if (!work.length) return; + highlight.set(time, operation(highlightWorker)); + } + + // Operations are used to wrap changes in such a way that each + // change won't have to update the cursor and display (which would + // be awkward, slow, and error-prone), but instead updates are + // batched and then all combined and executed at once. + function startOperation() { + updateInput = userSelChange = textChanged = null; + changes = []; selectionChanged = false; callbacks = []; + } + function endOperation() { + if (updateMaxLine) computeMaxLength(); + if (maxLineChanged && !options.lineWrapping) { + var cursorWidth = widthForcer.offsetWidth, left = stringWidth(maxLine); + widthForcer.style.left = left + "px"; + lineSpace.style.minWidth = (left + cursorWidth) + "px"; + maxLineChanged = false; + } + var newScrollPos, updated; + if (selectionChanged) { + var coords = calculateCursorCoords(); + newScrollPos = calculateScrollPos(coords.x, coords.y, coords.x, coords.yBot); + } + if (changes.length) updated = updateDisplay(changes, true, (newScrollPos ? newScrollPos.scrollTop : null)); + else { + if (selectionChanged) updateSelection(); + if (gutterDirty) updateGutter(); + } + if (newScrollPos) scrollCursorIntoView(); + if (selectionChanged) {scrollEditorIntoView(); restartBlink();} + + if (focused && !leaveInputAlone && + (updateInput === true || (updateInput !== false && selectionChanged))) + resetInput(userSelChange); + + if (selectionChanged && options.matchBrackets) + setTimeout(operation(function() { + if (bracketHighlighted) {bracketHighlighted(); bracketHighlighted = null;} + if (posEq(sel.from, sel.to)) matchBrackets(false); + }), 20); + var sc = selectionChanged, cbs = callbacks; // these can be reset by callbacks + if (textChanged && options.onChange && instance) + options.onChange(instance, textChanged); + if (sc && options.onCursorActivity) + options.onCursorActivity(instance); + for (var i = 0; i < cbs.length; ++i) cbs[i](instance); + if (updated && options.onUpdate) options.onUpdate(instance); + } + var nestedOperation = 0; + function operation(f) { + return function() { + if (!nestedOperation++) startOperation(); + try {var result = f.apply(this, arguments);} + finally {if (!--nestedOperation) endOperation();} + return result; + }; + } + + function compoundChange(f) { + history.startCompound(); + try { return f(); } finally { history.endCompound(); } + } + + for (var ext in extensions) + if (extensions.propertyIsEnumerable(ext) && + !instance.propertyIsEnumerable(ext)) + instance[ext] = extensions[ext]; + return instance; + } // (end of function CodeMirror) + + // The default configuration options. + CodeMirror.defaults = { + value: "", + mode: null, + theme: "default", + indentUnit: 2, + indentWithTabs: false, + smartIndent: true, + tabSize: 4, + keyMap: "default", + extraKeys: null, + electricChars: true, + autoClearEmptyLines: false, + onKeyEvent: null, + onDragEvent: null, + lineWrapping: false, + lineNumbers: false, + gutter: false, + fixedGutter: false, + firstLineNumber: 1, + readOnly: false, + dragDrop: true, + onChange: null, + onCursorActivity: null, + onGutterClick: null, + onHighlightComplete: null, + onUpdate: null, + onFocus: null, onBlur: null, onScroll: null, + matchBrackets: false, + workTime: 100, + workDelay: 200, + pollInterval: 100, + undoDepth: 40, + tabindex: null, + autofocus: null, + lineNumberFormatter: function(integer) { return integer; } + }; + + var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); + var mac = ios || /Mac/.test(navigator.platform); + var win = /Win/.test(navigator.platform); + + // Known modes, by name and by MIME + var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + if (arguments.length > 2) { + mode.dependencies = []; + for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); + } + modes[name] = mode; + }; + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + CodeMirror.resolveMode = function(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) + spec = mimeModes[spec]; + else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) + return CodeMirror.resolveMode("application/xml"); + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + CodeMirror.getMode = function(options, spec) { + var spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) return CodeMirror.getMode(options, "text/plain"); + return mfactory(options, spec); + }; + CodeMirror.listModes = function() { + var list = []; + for (var m in modes) + if (modes.propertyIsEnumerable(m)) list.push(m); + return list; + }; + CodeMirror.listMIMEs = function() { + var list = []; + for (var m in mimeModes) + if (mimeModes.propertyIsEnumerable(m)) list.push({mime: m, mode: mimeModes[m]}); + return list; + }; + + var extensions = CodeMirror.extensions = {}; + CodeMirror.defineExtension = function(name, func) { + extensions[name] = func; + }; + + var commands = CodeMirror.commands = { + selectAll: function(cm) {cm.setSelection({line: 0, ch: 0}, {line: cm.lineCount() - 1});}, + killLine: function(cm) { + var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to); + if (!sel && cm.getLine(from.line).length == from.ch) cm.replaceRange("", from, {line: from.line + 1, ch: 0}); + else cm.replaceRange("", from, sel ? to : {line: from.line}); + }, + deleteLine: function(cm) {var l = cm.getCursor().line; cm.replaceRange("", {line: l, ch: 0}, {line: l});}, + undo: function(cm) {cm.undo();}, + redo: function(cm) {cm.redo();}, + goDocStart: function(cm) {cm.setCursor(0, 0, true);}, + goDocEnd: function(cm) {cm.setSelection({line: cm.lineCount() - 1}, null, true);}, + goLineStart: function(cm) {cm.setCursor(cm.getCursor().line, 0, true);}, + goLineStartSmart: function(cm) { + var cur = cm.getCursor(); + var text = cm.getLine(cur.line), firstNonWS = Math.max(0, text.search(/\S/)); + cm.setCursor(cur.line, cur.ch <= firstNonWS && cur.ch ? 0 : firstNonWS, true); + }, + goLineEnd: function(cm) {cm.setSelection({line: cm.getCursor().line}, null, true);}, + goLineUp: function(cm) {cm.moveV(-1, "line");}, + goLineDown: function(cm) {cm.moveV(1, "line");}, + goPageUp: function(cm) {cm.moveV(-1, "page");}, + goPageDown: function(cm) {cm.moveV(1, "page");}, + goCharLeft: function(cm) {cm.moveH(-1, "char");}, + goCharRight: function(cm) {cm.moveH(1, "char");}, + goColumnLeft: function(cm) {cm.moveH(-1, "column");}, + goColumnRight: function(cm) {cm.moveH(1, "column");}, + goWordLeft: function(cm) {cm.moveH(-1, "word");}, + goWordRight: function(cm) {cm.moveH(1, "word");}, + delCharLeft: function(cm) {cm.deleteH(-1, "char");}, + delCharRight: function(cm) {cm.deleteH(1, "char");}, + delWordLeft: function(cm) {cm.deleteH(-1, "word");}, + delWordRight: function(cm) {cm.deleteH(1, "word");}, + indentAuto: function(cm) {cm.indentSelection("smart");}, + indentMore: function(cm) {cm.indentSelection("add");}, + indentLess: function(cm) {cm.indentSelection("subtract");}, + insertTab: function(cm) {cm.replaceSelection("\t", "end");}, + defaultTab: function(cm) { + if (cm.somethingSelected()) cm.indentSelection("add"); + else cm.replaceSelection("\t", "end"); + }, + transposeChars: function(cm) { + var cur = cm.getCursor(), line = cm.getLine(cur.line); + if (cur.ch > 0 && cur.ch < line.length - 1) + cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1), + {line: cur.line, ch: cur.ch - 1}, {line: cur.line, ch: cur.ch + 1}); + }, + newlineAndIndent: function(cm) { + cm.replaceSelection("\n", "end"); + cm.indentLine(cm.getCursor().line); + }, + toggleOverwrite: function(cm) {cm.toggleOverwrite();} + ,delSpaceToPrevTabStop : function(cm){ + var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to); + if (!posEq(from, to)) {cm.replaceRange("", from, to); return} + var cur = cm.getCursor(), line = cm.getLine(cur.line); + var tabsize = cm.getOption('tabSize'); + var chToPrevTabStop = cur.ch-(Math.ceil(cur.ch/tabsize)-1)*tabsize; + var from = {ch:cur.ch-chToPrevTabStop,line:cur.line} + var select = cm.getRange(from,cur) + if( select.match(/^\ +$/) != null){ + cm.replaceRange("",from,cur) + } else { + cm.deleteH(-1,"char") + } + } + }; + + var keyMap = CodeMirror.keyMap = {}; + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharRight", "Backspace": "delCharLeft", "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite" + }; + // Note that the save and find-related commands aren't defined by + // default. Unknown commands are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Alt-Up": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Down": "goDocEnd", + "Ctrl-Left": "goWordLeft", "Ctrl-Right": "goWordRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delWordLeft", "Ctrl-Delete": "delWordRight", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + fallthrough: "basic" + }; + keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goWordLeft", + "Alt-Right": "goWordRight", "Cmd-Left": "goLineStart", "Cmd-Right": "goLineEnd", "Alt-Backspace": "delWordLeft", + "Ctrl-Alt-Backspace": "delWordRight", "Alt-Delete": "delWordRight", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", + fallthrough: ["basic", "emacsy"] + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageUp", "Shift-Ctrl-V": "goPageDown", "Ctrl-D": "delCharRight", "Ctrl-H": "delCharLeft", + "Alt-D": "delWordRight", "Alt-Backspace": "delWordLeft", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" + }; + + function getKeyMap(val) { + if (typeof val == "string") return keyMap[val]; + else return val; + } + function lookupKey(name, extraMap, map, handle, stop) { + function lookup(map) { + map = getKeyMap(map); + var found = map[name]; + if (found != null && handle(found)) return true; + if (map.nofallthrough) { + if (stop) stop(); + return true; + } + var fallthrough = map.fallthrough; + if (fallthrough == null) return false; + if (Object.prototype.toString.call(fallthrough) != "[object Array]") + return lookup(fallthrough); + for (var i = 0, e = fallthrough.length; i < e; ++i) { + if (lookup(fallthrough[i])) return true; + } + return false; + } + if (extraMap && lookup(extraMap)) return true; + return lookup(map); + } + function isModifierKey(event) { + var name = keyNames[e_prop(event, "keyCode")]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; + } + + CodeMirror.fromTextArea = function(textarea, options) { + if (!options) options = {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabindex) + options.tabindex = textarea.tabindex; + if (options.autofocus == null && textarea.getAttribute("autofocus") != null) + options.autofocus = true; + + function save() {textarea.value = instance.getValue();} + if (textarea.form) { + // Deplorable hack to make the submit method do the right thing. + var rmSubmit = connect(textarea.form, "submit", save, true); + if (typeof textarea.form.submit == "function") { + var realSubmit = textarea.form.submit; + function wrappedSubmit() { + save(); + textarea.form.submit = realSubmit; + textarea.form.submit(); + textarea.form.submit = wrappedSubmit; + } + textarea.form.submit = wrappedSubmit; + } + } + + textarea.style.display = "none"; + var instance = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + instance.save = save; + instance.getTextArea = function() { return textarea; }; + instance.toTextArea = function() { + save(); + textarea.parentNode.removeChild(instance.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + rmSubmit(); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + return instance; + }; + + // Utility functions for working with state. Exported because modes + // sometimes need to do this. + function copyState(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + } + CodeMirror.copyState = copyState; + function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + } + CodeMirror.startState = startState; + + // The character stream used by a mode's parser. + function StringStream(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + } + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == 0;}, + peek: function() {return this.string.charAt(this.pos);}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() {return countColumn(this.string, this.start, this.tabSize);}, + indentation: function() {return countColumn(this.string, null, this.tabSize);}, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} + if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);} + }; + CodeMirror.StringStream = StringStream; + + function MarkedText(from, to, className, marker) { + this.from = from; this.to = to; this.style = className; this.marker = marker; + } + MarkedText.prototype = { + attach: function(line) { this.marker.set.push(line); }, + detach: function(line) { + var ix = indexOf(this.marker.set, line); + if (ix > -1) this.marker.set.splice(ix, 1); + }, + split: function(pos, lenBefore) { + if (this.to <= pos && this.to != null) return null; + var from = this.from < pos || this.from == null ? null : this.from - pos + lenBefore; + var to = this.to == null ? null : this.to - pos + lenBefore; + return new MarkedText(from, to, this.style, this.marker); + }, + dup: function() { return new MarkedText(null, null, this.style, this.marker); }, + clipTo: function(fromOpen, from, toOpen, to, diff) { + if (fromOpen && to > this.from && (to < this.to || this.to == null)) + this.from = null; + else if (this.from != null && this.from >= from) + this.from = Math.max(to, this.from) + diff; + if (toOpen && (from < this.to || this.to == null) && (from > this.from || this.from == null)) + this.to = null; + else if (this.to != null && this.to > from) + this.to = to < this.to ? this.to + diff : from; + }, + isDead: function() { return this.from != null && this.to != null && this.from >= this.to; }, + sameSet: function(x) { return this.marker == x.marker; } + }; + + function Bookmark(pos) { + this.from = pos; this.to = pos; this.line = null; + } + Bookmark.prototype = { + attach: function(line) { this.line = line; }, + detach: function(line) { if (this.line == line) this.line = null; }, + split: function(pos, lenBefore) { + if (pos < this.from) { + this.from = this.to = (this.from - pos) + lenBefore; + return this; + } + }, + isDead: function() { return this.from > this.to; }, + clipTo: function(fromOpen, from, toOpen, to, diff) { + if ((fromOpen || from < this.from) && (toOpen || to > this.to)) { + this.from = 0; this.to = -1; + } else if (this.from > from) { + this.from = this.to = Math.max(to, this.from) + diff; + } + }, + sameSet: function(x) { return false; }, + find: function() { + if (!this.line || !this.line.parent) return null; + return {line: lineNo(this.line), ch: this.from}; + }, + clear: function() { + if (this.line) { + var found = indexOf(this.line.marked, this); + if (found != -1) this.line.marked.splice(found, 1); + this.line = null; + } + } + }; + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + function Line(text, styles) { + this.styles = styles || [text, null]; + this.text = text; + this.height = 1; + this.marked = this.gutterMarker = this.className = this.bgClassName = this.handlers = null; + this.stateAfter = this.parent = this.hidden = null; + } + Line.inheritMarks = function(text, orig) { + var ln = new Line(text), mk = orig && orig.marked; + if (mk) { + for (var i = 0; i < mk.length; ++i) { + if (mk[i].to == null && mk[i].style) { + var newmk = ln.marked || (ln.marked = []), mark = mk[i]; + var nmark = mark.dup(); newmk.push(nmark); nmark.attach(ln); + } + } + } + return ln; + } + Line.prototype = { + // Replace a piece of a line, keeping the styles around it intact. + replace: function(from, to_, text) { + var st = [], mk = this.marked, to = to_ == null ? this.text.length : to_; + copyStyles(0, from, this.styles, st); + if (text) st.push(text, null); + copyStyles(to, this.text.length, this.styles, st); + this.styles = st; + this.text = this.text.slice(0, from) + text + this.text.slice(to); + this.stateAfter = null; + if (mk) { + var diff = text.length - (to - from); + for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + mark.clipTo(from == null, from || 0, to_ == null, to, diff); + if (mark.isDead()) {mark.detach(this); mk.splice(i--, 1);} + } + } + }, + // Split a part off a line, keeping styles and markers intact. + split: function(pos, textBefore) { + var st = [textBefore, null], mk = this.marked; + copyStyles(pos, this.text.length, this.styles, st); + var taken = new Line(textBefore + this.text.slice(pos), st); + if (mk) { + for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + var newmark = mark.split(pos, textBefore.length); + if (newmark) { + if (!taken.marked) taken.marked = []; + taken.marked.push(newmark); newmark.attach(taken); + if (newmark == mark) mk.splice(i--, 1); + } + } + } + return taken; + }, + append: function(line) { + var mylen = this.text.length, mk = line.marked, mymk = this.marked; + this.text += line.text; + copyStyles(0, line.text.length, line.styles, this.styles); + if (mymk) { + for (var i = 0; i < mymk.length; ++i) + if (mymk[i].to == null) mymk[i].to = mylen; + } + if (mk && mk.length) { + if (!mymk) this.marked = mymk = []; + outer: for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + if (!mark.from) { + for (var j = 0; j < mymk.length; ++j) { + var mymark = mymk[j]; + if (mymark.to == mylen && mymark.sameSet(mark)) { + mymark.to = mark.to == null ? null : mark.to + mylen; + if (mymark.isDead()) { + mymark.detach(this); + mk.splice(i--, 1); + } + continue outer; + } + } + } + mymk.push(mark); + mark.attach(this); + mark.from += mylen; + if (mark.to != null) mark.to += mylen; + } + } + }, + fixMarkEnds: function(other) { + var mk = this.marked, omk = other.marked; + if (!mk) return; + outer: for (var i = 0; i < mk.length; ++i) { + var mark = mk[i], close = mark.to == null; + if (close && omk) { + for (var j = 0; j < omk.length; ++j) { + var om = omk[j]; + if (!om.sameSet(mark) || om.from != null) continue + if (mark.from == this.text.length && om.to == 0) { + omk.splice(j, 1); + mk.splice(i--, 1); + continue outer; + } else { + close = false; break; + } + } + } + if (close) mark.to = this.text.length; + } + }, + fixMarkStarts: function() { + var mk = this.marked; + if (!mk) return; + for (var i = 0; i < mk.length; ++i) + if (mk[i].from == null) mk[i].from = 0; + }, + addMark: function(mark) { + mark.attach(this); + if (this.marked == null) this.marked = []; + this.marked.push(mark); + this.marked.sort(function(a, b){return (a.from || 0) - (b.from || 0);}); + }, + // Run the given mode's parser over a line, update the styles + // array, which contains alternating fragments of text and CSS + // classes. + highlight: function(mode, state, tabSize) { + var stream = new StringStream(this.text, tabSize), st = this.styles, pos = 0; + var changed = false, curWord = st[0], prevWord; + if (this.text == "" && mode.blankLine) mode.blankLine(state); + while (!stream.eol()) { + var style = mode.token(stream, state); + var substr = this.text.slice(stream.start, stream.pos); + stream.start = stream.pos; + if (pos && st[pos-1] == style) + st[pos-2] += substr; + else if (substr) { + if (!changed && (st[pos+1] != style || (pos && st[pos-2] != prevWord))) changed = true; + st[pos++] = substr; st[pos++] = style; + prevWord = curWord; curWord = st[pos]; + } + // Give up when line is ridiculously long + if (stream.pos > 5000) { + st[pos++] = this.text.slice(stream.pos); st[pos++] = null; + break; + } + } + if (st.length != pos) {st.length = pos; changed = true;} + if (pos && st[pos-2] != prevWord) changed = true; + // Short lines with simple highlights return null, and are + // counted as changed by the driver because they are likely to + // highlight the same way in various contexts. + return changed || (st.length < 5 && this.text.length < 10 ? null : false); + }, + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(mode, state, ch) { + var txt = this.text, stream = new StringStream(txt); + while (stream.pos < ch && !stream.eol()) { + stream.start = stream.pos; + var style = mode.token(stream, state); + } + return {start: stream.start, + end: stream.pos, + string: stream.current(), + className: style || null, + state: state}; + }, + indentation: function(tabSize) {return countColumn(this.text, null, tabSize);}, + // Produces an HTML fragment for the line, taking selection, + // marking, and highlighting into account. + getHTML: function(makeTab, wrapAt, wrapId, wrapWBR) { + var html = [], first = true, col = 0; + function span_(text, style) { + if (!text) return; + // Work around a bug where, in some compat modes, IE ignores leading spaces + if (first && ie && text.charAt(0) == " ") text = "\u00a0" + text.slice(1); + first = false; + if (text.indexOf("\t") == -1) { + col += text.length; + var escaped = htmlEscape(text); + } else { + var escaped = ""; + for (var pos = 0;;) { + var idx = text.indexOf("\t", pos); + if (idx == -1) { + escaped += htmlEscape(text.slice(pos)); + col += text.length - pos; + break; + } else { + col += idx - pos; + var tab = makeTab(col); + escaped += htmlEscape(text.slice(pos, idx)) + tab.html; + col += tab.width; + pos = idx + 1; + } + } + } + if (style) html.push('', escaped, ""); + else html.push(escaped); + } + var span = span_; + if (wrapAt != null) { + var outPos = 0, open = ""; + span = function(text, style) { + var l = text.length; + if (wrapAt >= outPos && wrapAt < outPos + l) { + if (wrapAt > outPos) { + span_(text.slice(0, wrapAt - outPos), style); + // See comment at the definition of spanAffectsWrapping + if (wrapWBR) html.push(""); + } + html.push(open); + var cut = wrapAt - outPos; + span_(opera ? text.slice(cut, cut + 1) : text.slice(cut), style); + html.push(""); + if (opera) span_(text.slice(cut + 1), style); + wrapAt--; + outPos += l; + } else { + outPos += l; + span_(text, style); + // Output empty wrapper when at end of line + // (Gecko and IE8+ do strange wrapping when adding a space + // to the end of the line. Other browsers don't react well + // to zero-width spaces. So we do hideous browser sniffing + // to determine which to use.) + if (outPos == wrapAt && outPos == len) + html.push(open + (gecko || (ie && !ie_lt8) ? "​" : " ") + ""); + // Stop outputting HTML when gone sufficiently far beyond measure + else if (outPos > wrapAt + 10 && /\s/.test(text)) span = function(){}; + } + } + } + + var st = this.styles, allText = this.text, marked = this.marked; + var len = allText.length; + function styleToClass(style) { + if (!style) return null; + return "cm-" + style.replace(/ +/g, " cm-"); + } + + if (!allText && wrapAt == null) { + span(" "); + } else if (!marked || !marked.length) { + for (var i = 0, ch = 0; ch < len; i+=2) { + var str = st[i], style = st[i+1], l = str.length; + if (ch + l > len) str = str.slice(0, len - ch); + ch += l; + span(str, styleToClass(style)); + } + } else { + var pos = 0, i = 0, text = "", style, sg = 0; + var nextChange = marked[0].from || 0, marks = [], markpos = 0; + function advanceMarks() { + var m; + while (markpos < marked.length && + ((m = marked[markpos]).from == pos || m.from == null)) { + if (m.style != null) marks.push(m); + ++markpos; + } + nextChange = markpos < marked.length ? marked[markpos].from : Infinity; + for (var i = 0; i < marks.length; ++i) { + var to = marks[i].to; + if (to == null) to = Infinity; + if (to == pos) marks.splice(i--, 1); + else nextChange = Math.min(to, nextChange); + } + } + var m = 0; + while (pos < len) { + if (nextChange == pos) advanceMarks(); + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + var appliedStyle = style; + for (var j = 0; j < marks.length; ++j) + appliedStyle = (appliedStyle ? appliedStyle + " " : "") + marks[j].style; + span(end > upto ? text.slice(0, upto - pos) : text, appliedStyle); + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} + pos = end; + } + text = st[i++]; style = styleToClass(st[i++]); + } + } + } + return html.join(""); + }, + cleanUp: function() { + this.parent = null; + if (this.marked) + for (var i = 0, e = this.marked.length; i < e; ++i) this.marked[i].detach(this); + } + }; + // Utility used by replace and split above + function copyStyles(from, to, source, dest) { + for (var i = 0, pos = 0, state = 0; pos < to; i+=2) { + var part = source[i], end = pos + part.length; + if (state == 0) { + if (end > from) dest.push(part.slice(from - pos, Math.min(part.length, to - pos)), source[i+1]); + if (end >= from) state = 1; + } else if (state == 1) { + if (end > to) dest.push(part.slice(0, to - pos), source[i+1]); + else dest.push(part, source[i+1]); + } + pos = end; + } + } + + // Data structure that holds the sequence of lines. + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + for (var i = 0, e = lines.length, height = 0; i < e; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length; }, + remove: function(at, n, callbacks) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + line.cleanUp(); + if (line.handlers) + for (var j = 0; j < line.handlers.length; ++j) callbacks.push(line.handlers[j]); + } + this.lines.splice(at, n); + }, + collapse: function(lines) { + lines.splice.apply(lines, [lines.length, 0].concat(this.lines)); + }, + insertHeight: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0, e = lines.length; i < e; ++i) lines[i].parent = this; + }, + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + if (op(this.lines[at])) return true; + } + }; + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0, e = children.length; i < e; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + BranchChunk.prototype = { + chunkSize: function() { return this.size; }, + remove: function(at, n, callbacks) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.remove(at, rm, callbacks); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) break; + at = 0; + } else at -= sz; + } + if (this.size - n < 25) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + collapse: function(lines) { + for (var i = 0, e = this.children.length; i < e; ++i) this.children[i].collapse(lines); + }, + insert: function(at, lines) { + var height = 0; + for (var i = 0, e = lines.length; i < e; ++i) height += lines[i].height; + this.insertHeight(at, lines, height); + }, + insertHeight: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertHeight(at, lines, height); + if (child.lines && child.lines.length > 50) { + while (child.lines.length > 50) { + var spilled = child.lines.splice(child.lines.length - 25, 25); + var newleaf = new LeafChunk(spilled); + child.height -= newleaf.height; + this.children.splice(i + 1, 0, newleaf); + newleaf.parent = this; + } + this.maybeSpill(); + } + break; + } + at -= sz; + } + }, + maybeSpill: function() { + if (this.children.length <= 10) return; + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10); + me.parent.maybeSpill(); + }, + iter: function(from, to, op) { this.iterN(from, to - from, op); }, + iterN: function(at, n, op) { + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) return true; + if ((n -= used) == 0) break; + at = 0; + } else at -= sz; + } + } + }; + + function getLineAt(chunk, n) { + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break; } + n -= sz; + } + } + return chunk.lines[n]; + } + function lineNo(line) { + if (line.parent == null) return null; + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0, e = chunk.children.length; ; ++i) { + if (chunk.children[i] == cur) break; + no += chunk.children[i].chunkSize(); + } + } + return no; + } + function lineAtHeight(chunk, h) { + var n = 0; + outer: do { + for (var i = 0, e = chunk.children.length; i < e; ++i) { + var child = chunk.children[i], ch = child.height; + if (h < ch) { chunk = child; continue outer; } + h -= ch; + n += child.chunkSize(); + } + return n; + } while (!chunk.lines); + for (var i = 0, e = chunk.lines.length; i < e; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) break; + h -= lh; + } + return n + i; + } + function heightAtLine(chunk, n) { + var h = 0; + outer: do { + for (var i = 0, e = chunk.children.length; i < e; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; continue outer; } + n -= sz; + h += child.height; + } + return h; + } while (!chunk.lines); + for (var i = 0; i < n; ++i) h += chunk.lines[i].height; + return h; + } + + // The history object 'chunks' changes that are made close together + // and at almost the same time into bigger undoable units. + function History() { + this.time = 0; + this.done = []; this.undone = []; + this.compound = 0; + this.closed = false; + } + History.prototype = { + addChange: function(start, added, old) { + this.undone.length = 0; + var time = +new Date, cur = this.done[this.done.length - 1], last = cur && cur[cur.length - 1]; + var dtime = time - this.time; + + if (this.compound && cur && !this.closed) { + cur.push({start: start, added: added, old: old}); + } else if (dtime > 400 || !last || this.closed || + last.start > start + old.length || last.start + last.added < start) { + this.done.push([{start: start, added: added, old: old}]); + this.closed = false; + } else { + var startBefore = Math.max(0, last.start - start), + endAfter = Math.max(0, (start + old.length) - (last.start + last.added)); + for (var i = startBefore; i > 0; --i) last.old.unshift(old[i - 1]); + for (var i = endAfter; i > 0; --i) last.old.push(old[old.length - i]); + if (startBefore) last.start = start; + last.added += added - (old.length - startBefore - endAfter); + } + this.time = time; + }, + startCompound: function() { + if (!this.compound++) this.closed = true; + }, + endCompound: function() { + if (!--this.compound) this.closed = true; + } + }; + + function stopMethod() {e_stop(this);} + // Ensure an event has a stop method. + function addStop(event) { + if (!event.stop) event.stop = stopMethod; + return event; + } + + function e_preventDefault(e) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + function e_stopPropagation(e) { + if (e.stopPropagation) e.stopPropagation(); + else e.cancelBubble = true; + } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} + CodeMirror.e_stop = e_stop; + CodeMirror.e_preventDefault = e_preventDefault; + CodeMirror.e_stopPropagation = e_stopPropagation; + + function e_target(e) {return e.target || e.srcElement;} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) b = 1; + else if (e.button & 2) b = 3; + else if (e.button & 4) b = 2; + } + if (mac && e.ctrlKey && b == 1) b = 3; + return b; + } + + // Allow 3rd-party code to override event properties by adding an override + // object to an event object. + function e_prop(e, prop) { + var overridden = e.override && e.override.hasOwnProperty(prop); + return overridden ? e.override[prop] : e[prop]; + } + + // Event handler registration. If disconnect is true, it'll return a + // function that unregisters the handler. + function connect(node, type, handler, disconnect) { + if (typeof node.addEventListener == "function") { + node.addEventListener(type, handler, false); + if (disconnect) return function() {node.removeEventListener(type, handler, false);}; + } else { + var wrapHandler = function(event) {handler(event || window.event);}; + node.attachEvent("on" + type, wrapHandler); + if (disconnect) return function() {node.detachEvent("on" + type, wrapHandler);}; + } + } + CodeMirror.connect = connect; + + function Delayed() {this.id = null;} + Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}}; + + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + + var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); + var ie = /MSIE \d/.test(navigator.userAgent); + var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); + var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); + var quirksMode = ie && document.documentMode == 5; + var webkit = /WebKit\//.test(navigator.userAgent); + var chrome = /Chrome\//.test(navigator.userAgent); + var opera = /Opera\//.test(navigator.userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var khtml = /KHTML\//.test(navigator.userAgent); + var mac_geLion = /Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent); + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie_lt9) return false; + var div = document.createElement('div'); + return "draggable" in div || "dragDrop" in div; + }(); + + // Feature-detect whether newlines in textareas are converted to \r\n + var lineSep = function () { + var te = document.createElement("textarea"); + te.value = "foo\nbar"; + if (te.value.indexOf("\r") > -1) return "\r\n"; + return "\n"; + }(); + + // For a reason I have yet to figure out, some browsers disallow + // word wrapping between certain characters *only* if a new inline + // element is started between them. This makes it hard to reliably + // measure the position of things, since that requires inserting an + // extra span. This terribly fragile set of regexps matches the + // character combinations that suffer from this phenomenon on the + // various browsers. + var spanAffectsWrapping = /^$/; // Won't match any two-character string + if (gecko) spanAffectsWrapping = /$'/; + else if (safari) spanAffectsWrapping = /\-[^ \-?]|\?[^ !'\"\),.\-\/:;\?\]\}]/; + else if (chrome) spanAffectsWrapping = /\-[^ \-\.?]|\?[^ \-\.?\]\}:;!'\"\),\/]|[\.!\"#&%\)*+,:;=>\]|\}~][\(\{\[<]|\$'/; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + function countColumn(string, end, tabSize) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = 0, n = 0; i < end; ++i) { + if (string.charAt(i) == "\t") n += tabSize - (n % tabSize); + else ++n; + } + return n; + } + + function computedStyle(elt) { + if (elt.currentStyle) return elt.currentStyle; + return window.getComputedStyle(elt, null); + } + + function eltOffset(node, screen) { + // Take the parts of bounding client rect that we are interested in so we are able to edit if need be, + // since the returned value cannot be changed externally (they are kept in sync as the element moves within the page) + try { var box = node.getBoundingClientRect(); box = { top: box.top, left: box.left }; } + catch(e) { box = {top: 0, left: 0}; } + if (!screen) { + // Get the toplevel scroll, working around browser differences. + if (window.pageYOffset == null) { + var t = document.documentElement || document.body.parentNode; + if (t.scrollTop == null) t = document.body; + box.top += t.scrollTop; box.left += t.scrollLeft; + } else { + box.top += window.pageYOffset; box.left += window.pageXOffset; + } + } + return box; + } + + // Get a node's text content. + function eltText(node) { + return node.textContent || node.innerText || node.nodeValue || ""; + } + function selectInput(node) { + if (ios) { // Mobile Safari apparently has a bug where select() is broken. + node.selectionStart = 0; + node.selectionEnd = node.value.length; + } else node.select(); + } + + // Operations on {line, ch} objects. + function posEq(a, b) {return a.line == b.line && a.ch == b.ch;} + function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);} + function copyPos(x) {return {line: x.line, ch: x.ch};} + + var escapeElement = document.createElement("pre"); + function htmlEscape(str) { + escapeElement.textContent = str; + return escapeElement.innerHTML; + } + // Recent (late 2011) Opera betas insert bogus newlines at the start + // of the textContent, so we strip those. + if (htmlEscape("a") == "\na") { + htmlEscape = function(str) { + escapeElement.textContent = str; + return escapeElement.innerHTML.slice(1); + }; + // Some IEs don't preserve tabs through innerHTML + } else if (htmlEscape("\t") != "\t") { + htmlEscape = function(str) { + escapeElement.innerHTML = ""; + escapeElement.appendChild(document.createTextNode(str)); + return escapeElement.innerHTML; + }; + } + CodeMirror.htmlEscape = htmlEscape; + + // Used to position the cursor after an undo/redo by finding the + // last edited character. + function editEnd(from, to) { + if (!to) return 0; + if (!from) return to.length; + for (var i = from.length, j = to.length; i >= 0 && j >= 0; --i, --j) + if (from.charAt(i) != to.charAt(j)) break; + return j + 1; + } + + function indexOf(collection, elt) { + if (collection.indexOf) return collection.indexOf(elt); + for (var i = 0, e = collection.length; i < e; ++i) + if (collection[i] == elt) return i; + return -1; + } + function isWordChar(ch) { + return /\w/.test(ch) || ch.toUpperCase() != ch.toLowerCase(); + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) nl = string.length; + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result; + } : function(string){return string.split(/\r\n?|\n/);}; + CodeMirror.splitLines = splitLines; + + var hasSelection = window.getSelection ? function(te) { + try { return te.selectionStart != te.selectionEnd; } + catch(e) { return false; } + } : function(te) { + try {var range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) return false; + return range.compareEndPoints("StartToEnd", range) != 0; + }; + + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 91: "Mod", 92: "Mod", 93: "Mod", 109: "-", 107: "=", 127: "Delete", + 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63276: "PageUp", 63277: "PageDown", 63275: "End", 63273: "Home", + 63234: "Left", 63232: "Up", 63235: "Right", 63233: "Down", 63302: "Insert", 63272: "Delete"}; + CodeMirror.keyNames = keyNames; + (function() { + // Number keys + for (var i = 0; i < 10; i++) keyNames[i + 48] = String(i); + // Alphabetic keys + for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); + // Function keys + for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; + })(); + + return CodeMirror; +})(); diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/completer.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/completer.js new file mode 100644 index 000000000..ac2d95ccd --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/completer.js @@ -0,0 +1,307 @@ +// function completer. +// +// completer should be a class that take an cell instance +var IPython = (function (IPython) { + // that will prevent us from misspelling + "use strict"; + + // easyier key mapping + var key = IPython.utils.keycodes; + + function prepend_n_prc(str, n) { + for( var i =0 ; i< n ; i++) + { str = '%'+str } + return str; + } + + function _existing_completion(item, completion_array){ + for( var c in completion_array ) { + if(completion_array[c].substr(-item.length) == item) + { return true; } + } + return false; + } + + // what is the common start of all completions + function shared_start(B, drop_prct) { + if (B.length == 1) { + return B[0]; + } + var A = new Array(); + var common; + var min_lead_prct = 10; + for (var i = 0; i < B.length; i++) { + var str = B[i].str; + var localmin = 0; + if(drop_prct == true){ + while ( str.substr(0, 1) == '%') { + localmin = localmin+1; + str = str.substring(1); + } + } + min_lead_prct = Math.min(min_lead_prct, localmin); + A.push(str); + } + + if (A.length > 1) { + var tem1, tem2, s; + A = A.slice(0).sort(); + tem1 = A[0]; + s = tem1.length; + tem2 = A.pop(); + while (s && tem2.indexOf(tem1) == -1) { + tem1 = tem1.substring(0, --s); + } + if (tem1 == "" || tem2.indexOf(tem1) != 0) { + return prepend_n_prc('', min_lead_prct); + } + return { + str: prepend_n_prc(tem1, min_lead_prct), + type: "computed", + from: B[0].from, + to: B[0].to + }; + } + return null; + } + + + var Completer = function (cell) { + this.editor = cell.code_mirror; + var that = this; + $([IPython.events]).on('status_busy.Kernel', function () { + that.skip_kernel_completion = true; + }); + $([IPython.events]).on('status_idle.Kernel', function () { + that.skip_kernel_completion = false; + }); + + + }; + + + + Completer.prototype.startCompletion = function () { + // call for a 'first' completion, that will set the editor and do some + // special behaviour like autopicking if only one completion availlable + // + if (this.editor.somethingSelected()) return; + this.done = false; + // use to get focus back on opera + this.carry_on_completion(true); + }; + + Completer.prototype.carry_on_completion = function (ff) { + // Pass true as parameter if you want the commpleter to autopick when + // only one completion. This function is automatically reinvoked at + // each keystroke with ff = false + var cur = this.editor.getCursor(); + var line = this.editor.getLine(cur.line); + var pre_cursor = this.editor.getRange({ + line: cur.line, + ch: cur.ch - 1 + }, cur); + + // we need to check that we are still on a word boundary + // because while typing the completer is still reinvoking itself + if (!/[0-9a-z._/\\:~-]/i.test(pre_cursor)) { + this.close(); + return; + } + + this.autopick = false; + if (ff != 'undefined' && ff == true) { + this.autopick = true; + } + + // We want a single cursor position. + if (this.editor.somethingSelected()) return; + + // one kernel completion came back, finish_completing will be called with the results + // we fork here and directly call finish completing if kernel is busy + if (this.skip_kernel_completion == true) { + this.finish_completing({ + 'matches': [], + matched_text: "" + }) + } else { + var callbacks = { + 'complete_reply': $.proxy(this.finish_completing, this) + }; + IPython.notebook.kernel.complete(line, cur.ch, callbacks); + } + }; + + Completer.prototype.finish_completing = function (content) { + // let's build a function that wrap all that stuff into what is needed + // for the new completer: + var matched_text = content.matched_text; + var matches = content.matches; + + var cur = this.editor.getCursor(); + var results = CodeMirror.contextHint(this.editor); + var filterd_results = Array(); + //remove results from context completion + //that are already in kernel completion + for(var elm in results) { + if(_existing_completion(results[elm]['str'], matches) == false) + { filterd_results.push(results[elm]); } + } + + // append the introspection result, in order, at at the beginning of + // the table and compute the replacement range from current cursor + // positon and matched_text length. + for (var i = matches.length - 1; i >= 0; --i) { + filterd_results.unshift({ + str: matches[i], + type: "introspection", + from: { + line: cur.line, + ch: cur.ch - matched_text.length + }, + to: { + line: cur.line, + ch: cur.ch + } + }); + } + + // one the 2 sources results have been merge, deal with it + this.raw_result = filterd_results; + + // if empty result return + if (!this.raw_result || !this.raw_result.length) return; + + // When there is only one completion, use it directly. + if (this.autopick == true && this.raw_result.length == 1) { + this.insert(this.raw_result[0]); + return; + } + + if (this.raw_result.length == 1) { + // test if first and only completion totally matches + // what is typed, in this case dismiss + var str = this.raw_result[0].str; + var pre_cursor = this.editor.getRange({ + line: cur.line, + ch: cur.ch - str.length + }, cur); + if (pre_cursor == str) { + this.close(); + return; + } + } + + this.complete = $('
    ').addClass('completions'); + this.complete.attr('id', 'complete'); + + this.sel = $('",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.css b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.css new file mode 100644 index 000000000..82752b552 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.css @@ -0,0 +1 @@ +.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;}.ui-helper-clearfix:after{clear:both;}.ui-helper-clearfix{zoom:1;}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-accordion{width:100%;}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;}.ui-accordion .ui-accordion-header-active{border-bottom:0!important;}.ui-accordion .ui-accordion-heading{display:block;font-size:1em;padding:.5em .5em .5em .7em;}.ui-accordion-icons .ui-accordion-heading{padding-left:2.2em;}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1;}.ui-accordion .ui-accordion-content-active{display:block;}.ui-autocomplete{position:absolute;cursor:default;}* html .ui-autocomplete{width:1px;}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:hidden;*overflow:visible;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:1.4;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}button.ui-button::-moz-focus-inner{border:0;padding:0;}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none;}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em;}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px;}.ui-datepicker .ui-datepicker-prev{left:2px;}.ui-datepicker .ui-datepicker-next{right:2px;}.ui-datepicker .ui-datepicker-prev-hover{left:1px;}.ui-datepicker .ui-datepicker-next-hover{right:1px;}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px;}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}.ui-datepicker select.ui-datepicker-month-year{width:100%;}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%;}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em;}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0;}.ui-datepicker td{border:0;padding:1px;}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none;}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0;}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible;}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left;}.ui-datepicker.ui-datepicker-multi{width:auto;}.ui-datepicker-multi .ui-datepicker-group{float:left;}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em;}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%;}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%;}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%;}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left;}.ui-datepicker-row-break{clear:both;width:100%;font-size:0;}.ui-datepicker-rtl{direction:rtl;}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto;}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto;}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto;}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right;}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left;}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right;}.ui-datepicker-rtl .ui-datepicker-group{float:right;}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px;}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px;}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px;}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none;}.ui-menu .ui-menu{margin-top:-3px;position:absolute;}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%;}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal;}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px;}.ui-menu .ui-state-disabled{font-weight:normal;padding:.0em .4em;margin:.4em 0 .2em;line-height:1.5;}.ui-menu-icons{position:relative;}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em;}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em;}.ui-menu .ui-menu-icon{position:static;float:right;}.ui-menubar{list-style:none;margin:0;padding-left:0;}.ui-menubar-item{float:left;}.ui-menubar .ui-button{float:left;font-weight:normal;border-top-width:0!important;border-bottom-width:0!important;margin:0;outline:none;}.ui-menubar .ui-menubar-link{border-right:1px dashed transparent;border-left:1px dashed transparent;}.ui-menubar .ui-menu{width:200px;position:absolute;z-index:9999;font-weight:normal;}.ui-progressbar{height:2em;text-align:left;overflow:hidden;}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black;}.ui-slider{position:relative;text-align:left;}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;}.ui-slider-horizontal{height:.8em;}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em;}.ui-slider-horizontal .ui-slider-range{top:0;height:100%;}.ui-slider-horizontal .ui-slider-range-min{left:0;}.ui-slider-horizontal .ui-slider-range-max{right:0;}.ui-slider-vertical{width:.8em;height:100px;}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em;}.ui-slider-vertical .ui-slider-range{left:0;width:100%;}.ui-slider-vertical .ui-slider-range-min{bottom:0;}.ui-slider-vertical .ui-slider-range-max{top:0;}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle;}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px;}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;z-index:100;text-align:center;vertical-align:middle;position:absolute;cursor:default;display:block;overflow:hidden;right:0;}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none;}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0;}.ui-spinner-up{top:0;}.ui-spinner-down{bottom:0;}span.ui-spinner{background:none;}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px;}.ui-tabs{position:relative;padding:.2em;zoom:1;}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0!important;padding:0;white-space:nowrap;}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text;}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer;}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none;}.ui-tooltip{padding:8px;position:absolute;z-index:9999;-o-box-shadow:0 0 5px #aaa;-moz-box-shadow:0 0 5px #aaa;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa;}* html .ui-tooltip{background-image:none;}body .ui-tooltip{border-width:2px;}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222;}.ui-widget-content a{color:#222;}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold;}.ui-widget-header a{color:#222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-widget :active{outline:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;} \ No newline at end of file diff --git a/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.js b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.js new file mode 100644 index 000000000..1365ee1c4 --- /dev/null +++ b/v3/bgranger-ipynb-embedding-demo/OPT-ipynb-static_files/jquery-ui.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery UI @VERSION + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"@VERSION",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode&&a.element[0].parentNode.nodeType!==11)for(var e=0;e0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a",options:{disabled:!1,create:null},_createWidget:function(b,c){c=a(c||this.defaultElement||this)[0],this.element=a(c),this.options=a.widget.extend({},this.options,this._getCreateOptions(),b),this.bindings=a(),this.hoverable=a(),this.focusable=a(),c!==this&&(a.data(c,this.widgetName,this),this._bind({remove:"destroy"}),this.document=a(c.style?c.ownerDocument:c.document||c),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create"),this._init()},_getCreateOptions:a.noop,_create:a.noop,_init:a.noop,destroy:function(){this._destroy(),this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled"),this.bindings.unbind("."+this.widgetName),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:a.noop,widget:function(){return this.element},option:function(c,d){var e=c,f,g,h;if(arguments.length===0)return a.widget.extend({},this.options);if(typeof c=="string"){e={},f=c.split("."),c=f.shift();if(f.length){g=e[c]=a.widget.extend({},this.options[c]);for(h=0;h=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})}(jQuery),function(a,b){a.widget("ui.draggable",a.ui.mouse,{version:"@VERSION",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.lefth[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.toph[3]?j-this.offset.click.toph[2]?k-this.offset.click.left=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f=k&&g<=l||h>=k&&h<=l||gl)&&(e>=i&&e<=j||f>=i&&f<=j||ej);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),a.browser.opera&&/relative/.test(f.css("position"))&&f.css({position:"relative",top:"auto",left:"auto"}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(a){var b=this.helper,c=this.options,d={},e=this,f=this.originalMousePosition,g=this.axis,h=a.pageX-f.left||0,i=a.pageY-f.top||0,j=this._change[g];if(!j)return!1;var k=j.apply(this,[a,h,i]);this._updateVirtualBoundaries(a.shiftKey);if(this._aspectRatio||a.shiftKey)k=this._updateRatio(k,a);k=this._respectSize(k,a),this._propagate("resize",a),b.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(k),this._trigger("resize",a,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10),position:b.css("position")})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,e){a(b).each(function(){var b=a(this),f=a(this).data("resizable-alsoresize"),g={},i=e&&e.length?e:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(i,function(a,b){var c=(f[b]||0)+(h[b]||0);c&&c>=0&&(g[b]=c||null)}),a.browser.opera&&/relative/.test(b.css("position"))&&(d._revertToRelativePosition=!0,b.css({position:"absolute",top:"auto",left:"auto"})),b.css(g)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};d._revertToRelativePosition&&(d._revertToRelativePosition=!1,typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)),a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}}(jQuery),function(a,b){a.widget("ui.selectable",a.ui.mouse,{version:"@VERSION",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.righth||i.bottome&&i.rightf&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget().toggleClass("ui-sortable-disabled",!!c)):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers +[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+jf&&b+ka[this.floating?"width":"height"]?l:f0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.topthis.containment[3]?h-this.offset.click.topthis.containment[2]?i-this.offset.click.left=0;f--)a.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:b.width(),height:b.height()},f=document.activeElement;b.wrap(d),(b[0]===f||a.contains(b[0],f))&&a(f).focus(),d=b.parent(),b.css("position")==="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),b.css(e);return d.css(c).show()},removeWrapper:function(b){var c=document.activeElement;b.parent().is(".ui-effects-wrapper")&&(b.parent().replaceWith(b),(b[0]===c||a.contains(b[0],c))&&a(c).focus());return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])});return e}}),a.fn.extend({effect:function(b,d,e,f){function m(b){function f(){a.isFunction(d)&&d.call(c[0]),a.isFunction(b)&&b()}var c=a(this),d=g.complete,e=g.mode;(c.is(":hidden")?e==="hide":e==="show")?f():j.call(c[0],g,f)}var g=l.apply(this,arguments),h=g.mode,i=g.queue,j=a.effects.effect[g.effect],k=!j&&c&&a.effects[g.effect];if(a.fx.off||!j&&!k)return h?this[h](g.duration,g.complete):this.each(function(){g.complete&&g.complete.call(this)});return j?i===!1?this.each(m):this.queue(i||"fx",m):k.call(this,{options:g,duration:g.duration,callback:g.complete,mode:g.mode})},_show:a.fn.show,show:function(a){if(m(a))return this._show.apply(this,arguments);var b=l.apply(this,arguments);b.mode="show";return this.effect.call(this,b)},_hide:a.fn.hide,hide:function(a){if(m(a))return this._hide.apply(this,arguments);var b=l.apply(this,arguments);b.mode="hide";return this.effect.call(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(m(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=l.apply(this,arguments);c.mode="toggle";return this.effect.call(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=e*.3,h=d;if(b==0)return c;if((b/=e)==1)return c+d;h1&&t.splice.apply(t,[1,0].concat(t.splice(u,l+1))),d.dequeue()}}(jQuery),function(a,b){a.effects.effect.clip=function(b,c){var d=a(this),e=["position","top","bottom","left","right","height","width"],f=a.effects.setMode(d,b.mode||"hide"),g=f==="show",h=b.direction||"vertical",i=h==="vertical",j=i?"height":"width",k=i?"top":"left",l={},m,n,o;a.effects.save(d,e),d.show(),m=a.effects.createWrapper(d).css({overflow:"hidden"}),n=d[0].tagName==="IMG"?m:d,o=n[j](),g&&(n.css(j,0),n.css(k,o/2)),l[j]=g?o:0,l[k]=g?0:o/2,n.animate(l,{queue:!1,duration:b.duration,easing:b.easing,complete:function(){g||d.hide(),a.effects.restore(d,e),a.effects.removeWrapper(d),c()}})}}(jQuery),function(a,b){a.effects.effect.drop=function(b,c){var d=a(this),e=["position","top","bottom","left","right","opacity","height","width"],f=a.effects.setMode(d,b.mode||"hide"),g=f==="show",h=b.direction||"left",i=h==="up"||h==="down"?"top":"left",j=h==="up"||h==="left"?"pos":"neg",k={opacity:g?1:0},l;a.effects.save(d,e),d.show(),a.effects.createWrapper(d),l=b.distance||d[i=="top"?"outerHeight":"outerWidth"]({margin:!0})/2,g&&d.css("opacity",0).css(i,j=="pos"?-l:l),k[i]=(g?j==="pos"?"+=":"-=":j==="pos"?"-=":"+=")+l,d.animate(k,{queue:!1,duration:b.duration,easing:b.easing,complete:function(){f=="hide"&&d.hide(),a.effects.restore(d,e),a.effects.removeWrapper(d),c()}})}}(jQuery),function(a,b){a.effects.effect.explode=function(b,c){function t(){f.css({visibility:"visible"}),a(l).remove(),h||f.hide(),c()}function s(){l.push(this),l.length==d*e&&t()}var d=b.pieces?Math.round(Math.sqrt(b.pieces)):3,e=d,f=a(this),g=a.effects.setMode(f,b.mode||"hide"),h=g==="show",i=f.show().css("visibility","hidden").offset(),j=Math.ceil(f.outerWidth()/e),k=Math.ceil(f.outerHeight()/d),l=[],m,n,o,p,q,r;for(m=0;m").css({position:"absolute",visibility:"visible",left:-n*j,top:-m*k}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:j,height:k,left:o+(h?q*j:0),top:p+(h?r*k:0),opacity:h?0:1}).animate({left:o+(h?0:q*j),top:p+(h?0:r*k),opacity:h?1:0},b.duration||500,b.easing,s)}}}(jQuery),function(a,b){a.effects.effect.fade=function(b,c){var d=a(this),e=a.effects.setMode(d,b.mode||"toggle"),f=e==="hide";d.show(),d.animate({opacity:f?0:1},{queue:!1,duration:b.duration,easing:b.easing,complete:function(){f&&d.hide(),c()}})}}(jQuery),function(a,b){a.effects.effect.fold=function(b,c){var d=a(this),e=["position","top","bottom","left","right","height","width"],f=a.effects.setMode(d,b.mode||"hide"),g=f==="show",h=f==="hide",i=b.size||15,j=/([0-9]+)%/.exec(i),k=!!b.horizFirst,l=g!=k,m=l?["width","height"]:["height","width"],n=b.duration/2,o,p,q={},r={};a.effects.save(d,e),d.show(),o=a.effects.createWrapper(d).css({overflow:"hidden"}),p=l?[o.width(),o.height()]:[o.height(),o.width()],j&&(i=parseInt(j[1],10)/100*p[h?0:1]),g&&o.css(k?{height:0,width:i}:{height:i,width:0}),q[m[0]]=g?p[0]:i,r[m[1]]=g?p[1]:0,o.animate(q,n,b.easing).animate(r,n,b.easing,function(){h&&d.hide(),a.effects.restore(d,e),a.effects.removeWrapper(d),c()})}}(jQuery),function(a,b){a.effects.effect.highlight=function(b,c){var d=a(this),e=["backgroundImage","backgroundColor","opacity"],f= +a.effects.setMode(d,b.mode||"show"),g={backgroundColor:d.css("backgroundColor")};f==="hide"&&(g.opacity=0),a.effects.save(d,e),d.show().css({backgroundImage:"none",backgroundColor:b.color||"#ffff99"}).animate(g,{queue:!1,duration:b.duration,easing:b.easing,complete:function(){f==="hide"&&d.hide(),a.effects.restore(d,e),c()}})}}(jQuery),function(a,b){a.effects.effect.pulsate=function(b,c){var d=a(this),e=a.effects.setMode(d,b.mode||"show"),f=e==="show",g=e==="hide",h=f||e==="hide",i=(b.times||5)*2+(h?1:0),j=b.duration/i,k=0,l=d.queue(),m=l.length,n;if(f||!d.is(":visible"))d.css("opacity",0).show(),k=1;for(n=1;n1&&l.splice.apply(l,[1,0].concat(l.splice(m,i+1))),d.dequeue()}}(jQuery),function(a,b){a.effects.effect.puff=function(b,c){var d=a(this),e=a.effects.setMode(d,b.mode||"hide"),f=e==="hide",g=parseInt(b.percent,10)||150,h=g/100,i={height:d.height(),width:d.width()};a.extend(b,{effect:"scale",queue:!1,fade:!0,mode:e,complete:c,percent:f?g:100,from:f?i:{height:i.height*h,width:i.width*h}}),d.effect(b)},a.effects.effect.scale=function(b,c){var d=a(this),e=a.extend(!0,{},b),f=a.effects.setMode(d,b.mode||"effect"),g=parseInt(b.percent,10)||(parseInt(b.percent,10)==0?0:f=="hide"?0:100),h=b.direction||"both",i=b.origin,j={height:d.height(),width:d.width(),outerHeight:d.outerHeight(),outerWidth:d.outerWidth()},k={y:h!="horizontal"?g/100:1,x:h!="vertical"?g/100:1};e.effect="size",e.queue=!1,e.complete=c,f!="effect"&&(e.origin=i||["middle","center"],e.restore=!0),e.from=b.from||(f=="show"?{height:0,width:0}:j),e.to={height:j.height*k.y,width:j.width*k.x,outerHeight:j.outerHeight*k.y,outerWidth:j.outerWidth*k.x},e.fade&&(f=="show"&&(e.from.opacity=0,e.to.opacity=1),f=="hide"&&(e.from.opacity=1,e.to.opacity=0)),d.effect(e)},a.effects.effect.size=function(b,c){var d=a(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],f=["position","top","bottom","left","right","overflow","opacity"],g=["width","height","overflow"],h=["fontSize"],i=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],j=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],k=a.effects.setMode(d,b.mode||"effect"),l=b.restore||k!=="effect",m=b.scale||"both",n=b.origin||["middle","center"],o,p,q,r=d.css("position");k==="show"&&d.show(),o={height:d.height(),width:d.width(),outerHeight:d.outerHeight(),outerWidth:d.outerWidth()},d.from=b.from||o,d.to=b.to||o,q={from:{y:d.from.height/o.height,x:d.from.width/o.width},to:{y:d.to.height/o.height,x:d.to.width/o.width}};if(m=="box"||m=="both")q.from.y!==q.to.y&&(e=e.concat(i),d.from=a.effects.setTransition(d,i,q.from.y,d.from),d.to=a.effects.setTransition(d,i,q.to.y,d.to)),q.from.x!==q.to.x&&(e=e.concat(j),d.from=a.effects.setTransition(d,j,q.from.x,d.from),d.to=a.effects.setTransition(d,j,q.to.x,d.to));(m=="content"||m=="both")&&q.from.y!==q.to.y&&(e=e.concat(h),d.from=a.effects.setTransition(d,h,q.from.y,d.from),d.to=a.effects.setTransition(d,h,q.to.y,d.to)),a.effects.save(d,l?e:f),d.show(),a.effects.createWrapper(d),d.css("overflow","hidden").css(d.from),n&&(p=a.effects.getBaseline(n,o),d.from.top=(o.outerHeight-d.outerHeight())*p.y,d.from.left=(o.outerWidth-d.outerWidth())*p.x,d.to.top=(o.outerHeight-d.to.outerHeight)*p.y,d.to.left=(o.outerWidth-d.to.outerWidth)*p.x),d.css(d.from);if(m=="content"||m=="both")i=i.concat(["marginTop","marginBottom"]).concat(h),j=j.concat(["marginLeft","marginRight"]),g=e.concat(i).concat(j),d.find("*[width]").each(function(){var c=a(this),d={height:c.height(),width:c.width()};l&&a.effects.save(c,g),c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(c.from=a.effects.setTransition(c,i,q.from.y,c.from),c.to=a.effects.setTransition(c,i,q.to.y,c.to)),q.from.x!=q.to.x&&(c.from=a.effects.setTransition(c,j,q.from.x,c.from),c.to=a.effects.setTransition(c,j,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.easing,function(){l&&a.effects.restore(c,g)})});d.animate(d.to,{queue:!1,duration:b.duration,easing:b.easing,complete:function(){d.to.opacity===0&&d.css("opacity",d.from.opacity),k=="hide"&&d.hide(),a.effects.restore(d,l?e:f),l||(r==="static"?d.css({position:"relative",top:d.to.top,left:d.to.left}):a.each(["top","left"],function(a,b){d.css(b,function(c,e){var f=parseInt(e,10),g=a?d.to.left:d.to.top,h=a?d.to.outerWidth-d.from.outerWidth:d.to.outerHeight-d.from.outerHeight,i=n[a]===b,j=n[a]==="middle"||n[a]==="center";if(e==="auto")return g+"px";return f+g+"px"})})),a.effects.removeWrapper(d),c()}})}}(jQuery),function(a,b){a.effects.effect.shake=function(b,c){var d=a(this),e=["position","top","bottom","left","right","height","width"],f=a.effects.setMode(d,b.mode||"effect"),g=b.direction||"left",h=b.distance||20,i=b.times||3,j=i*2+1,k=b.duration,l=g=="up"||g=="down"?"top":"left",m=g=="up"||g=="left",n={},o={},p={},q,r=d.queue(),s=r.length;a.effects.save(d,e),d.show(),a.effects.createWrapper(d),n[l]=(m?"-=":"+=")+h,o[l]=(m?"+=":"-=")+h*2,p[l]=(m?"-=":"+=")+h*2,d.animate(n,k,b.easing);for(q=1;q1&&r.splice.apply(r,[1,0].concat(r.splice(s,j+1))),d.dequeue()}}(jQuery),function(a,b){a.effects.effect.slide=function(b,c){var d=a(this),e=["position","top","bottom","left","right","width","height"],f=a.effects.setMode(d,b.mode||"show"),g=f==="show",h=b.direction||"left",i=h=="up"||h=="down"?"top":"left",j=h=="up"||h=="left",k,l={},m;a.effects.save(d,e),d.show(),k=b.distance||d[i==="top"?"outerHeight":"outerWidth"]({margin:!0}),a.effects.createWrapper(d).css({overflow:"hidden"}),g&&d.css(i,j?isNaN(k)?"-"+k:-k:k),l[i]=(g?j?"+=":"-=":j?"-=":"+=")+k,d.animate(l,{queue:!1,duration:b.duration,easing:b.easing,complete:function(){f==="hide"&&d.hide(),a.effects.restore(d,e),a.effects.removeWrapper(d),c()}})}}(jQuery),function(a,b){a.effects.effect.transfer=function(b,c){var d=a(this),e=a(b.to),f=e.css("position")==="fixed",g=a("body"),h=f?g.scrollTop():0,i=f?g.scrollLeft():0,j=e.offset(),k={top:j.top-h,left:j.left-i,height:e.innerHeight(),width:e.innerWidth()},l=d.offset(),m=a('
    ').appendTo(document.body).addClass(b.className).css({top:l.top-h,left:l.left-i,height:d.innerHeight(),width:d.innerWidth(),position:f?"fixed":"absolute"}).animate(k,b.duration,b.easing,function(){m.remove(),c()})}}(jQuery),function(a,b){a.widget("ui.accordion",{version:"@VERSION",options:{active:0,animated:"slide",collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var b=this,c=b.options;b.lastToggle={},b.element.addClass("ui-accordion ui-widget ui-helper-reset"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),b._hoverable(b.headers),b._focusable(b.headers),b.headers.find(":first-child").addClass("ui-accordion-heading"),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"),!c.collapsible&&c.active===!1&&(c.active=0),c.active<0&&(c.active+=this.headers.length),b.active=b._findActive(c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.refresh(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",a.proxy(b,"_keydown")).next().attr("role","tabpanel"),b.headers.not(b.active).attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),this._setupEvents(c.event)},_createIcons:function(){var b=this.options.icons;b&&(a("").addClass("ui-accordion-header-icon ui-icon "+b.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(b.header).addClass(b.activeHeader),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-accordion-header-icon").remove(),this.element.removeClass("ui-accordion-icons")},_destroy:function(){this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex").find("a").removeAttr("tabIndex").end().find(".ui-accordion-heading").removeClass("ui-accordion-heading"),this._destroyIcons();var a=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");this.options.heightStyle!=="content"&&a.css("height","")},_setOption:function(a,b){a==="active"?this._activate(b):(a==="event"&&(this.options.event&&this.headers.unbind(this.options.event+".accordion",this._eventHandler),this._setupEvents(b)),this._super(a,b),a==="collapsible"&&!b&&this.options.active===!1&&this._activate(0),a==="icons"&&(this._destroyIcons(),b&&this._createIcons()),a==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-accordion-disabled ui-state-disabled",!!b))},_keydown:function(b){if(!(this.options.disabled||b.altKey||b.ctrlKey)){var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._eventHandler(b)}f&&(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),b.preventDefault())}},refresh:function(){var b=this.options,c=this.element.parent(),d,e;b.heightStyle==="fill"?(a.support.minHeight||(e=c.css("overflow"),c.css("overflow","hidden")),d=c.height(),this.element.siblings(":visible").each(function(){var b=a(this),c=b.css("position");c!=="absolute"&&c!=="fixed"&&(d-=b.outerHeight(!0))}),e&&c.css("overflow",e),this.headers.each(function(){d-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,d-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")):b.heightStyle==="auto"&&(d=0,this.headers.next().each(function(){d=Math.max(d,a(this).height("").height())}).height(d));return this},_activate:function(b){var c=this._findActive(b)[0];c!==this.active[0]&&(c=c||this.active[0],this._eventHandler({target:c,currentTarget:c,preventDefault:a.noop}))},_findActive:function(b){return typeof b=="number"?this.headers.eq(b):a()},_setupEvents:function(b){b&&this.headers.bind(b.split(" ").join(".accordion ")+".accordion",a.proxy(this,"_eventHandler"))},_eventHandler:function(b){var c=this.options,d=this.active,e=a(b.currentTarget),f=e[0]===d[0],g=f&&c.collapsible,h=g?a():e.next(),i=d.next(),j={oldHeader:d,oldContent:i,newHeader:g?a():e,newContent:h};b.preventDefault();c.disabled||f&&!c.collapsible||this._trigger("beforeActivate",b,j)===!1||(c.active=g?!1:this.headers.index(e),this.active=f?a():e,this._toggle(j),d.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-accordion-header-icon").removeClass(c.icons.activeHeader).addClass(c.icons.header),f||(e.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-accordion-header-icon").removeClass(c.icons.header).addClass(c.icons.activeHeader),e.next().addClass("ui-accordion-content-active")))},_toggle:function(b){function g(){c._completed(b)}var c=this,d=c.options,e=b.newContent,f=b.oldContent;if(d.animated){var h=a.ui.accordion.animations,i=d.animated,j;h[i]||(j={easing:a.easing[i]?i:"slide",duration:700},i="slide"),h[i]({widget:c,toShow:e,toHide:f,prevShow:c.lastToggle.toShow,prevHide:c.lastToggle.toHide,complete:g,down:e.length&&(!f.length||e.index()",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var b=this,c,d,e;this.isMultiLine=this.element.is("textarea,[contenteditable]"),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(f){if(b.options.disabled||b.element.prop("readOnly"))c=!0,e=!0,d=!0;else{c=!1,e=!1,d=!1;var g=a.ui.keyCode;switch(f.keyCode){case g.PAGE_UP:c=!0,b._move("previousPage",f);break;case g.PAGE_DOWN:c=!0,b._move("nextPage",f);break;case g.UP:c=!0,b._keyEvent("previous",f);break;case g.DOWN:c=!0,b._keyEvent("next",f);break;case g.ENTER:case g.NUMPAD_ENTER:b.menu.active&&(c=!0,f.preventDefault());case g.TAB:if(!b.menu.active)return;b.menu.select(f);break;case g.ESCAPE:b.menu.element.is(":visible")&&(b._value(b.term),b.close(f));break;default:d=!0,b._searchTimeout(f)}}}).bind("keypress.autocomplete",function(e){if(c)c=!1,e.preventDefault();else{if(d)return;var f=a.ui.keyCode;switch(e.keyCode){case f.PAGE_UP:b._move("previousPage",e);break;case f.PAGE_DOWN:b._move("nextPage",e);break;case f.UP:b._keyEvent("previous",e);break;case f.DOWN:b._keyEvent("next",e)}}}).bind("input.autocomplete",function(a){e?(e=!1,a.preventDefault()):b._searchTimeout(a)}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b._value())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.cancelSearch=!0,b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("
      ").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){b.document.one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({input:a(),focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b._value(d.value)},select:function(a,c){var d=c.item.data("item.autocomplete"),e=b.previous;b.element[0]!==b.document[0].activeElement&&(b.element.focus(),b.previous=e,setTimeout(function(){b.previous=e,b.selectedItem=d},1)),!1!==b._trigger("select",a,{item:d})&&b._value(d.value),b.term=b._value(),b.close(a),b.selectedItem=d}}).zIndex(this.element.zIndex()+1).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),this._bind(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove()},_setOption:function(a,b){this._super(a,b),a==="source"&&this._initSource(),a==="appendTo"&&this.menu.element.appendTo(this.document.find(b||"body")[0]),a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",autocompleteRequest:++c,success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},_searchTimeout:function(a){var b=this;clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!==b._value()&&(b.selectedItem=null,b.search(null,a))},b.options.delay)},search:function(a,b){a=a!=null?a:this._value(),this.term=this._value();if(a.length").data("item.autocomplete",c).append(a("").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.isFirstItem()&&/^previous/.test(a)||this.menu.isLastItem()&&/^next/.test(a)){this._value(this.term),this.menu.blur();return}this.menu[a](b)}},widget:function(){return this.menu.element},_value:function(a){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})}(jQuery),function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form}));return e};a.widget("ui.button",{version:"@VERSION",defaultElement:"').addClass(this._triggerClass).html(g==""?f:$("").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;db&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$(''),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[g]||$.effects[g])?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&($.effects.effect[c]||$.effects[c])?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1-1){j=1,k=l;for(;;){var v=this._getDaysInMonth(i,j-1);if(k<=v)break;j++,k-=v}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&pp)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?''+q+"":e?"":''+q+"",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?''+s+"":e?"":''+s+"",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'",x=d?'
      '+(c?w:"")+(this._isInRange(a,v)?'":"")+(c?"":w)+"
      ":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='
      '+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'
      '+"";var R=z?'":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="=5?' class="ui-datepicker-week-end"':"")+">"+''+C[T]+""}Q+=R+"";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z";var _=z?'":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Ym;_+='",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+""}n++,n>11&&(n=0,o++),Q+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(Y)+""+(bb&&!G?" ":bc?''+Y.getDate()+"":''+Y.getDate()+"")+"
      "+(j?"
      "+(g[0]>0&&N==g[1]-1?'
      ':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'':""),a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='
      ',m="";if(f||!i)m+=''+g[b]+"";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+=''+c+"";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="
      ";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&bd?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth +,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="@VERSION",window["DP_jQuery_"+dpuuid]=$}(jQuery),function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};a.widget("ui.dialog",{version:"@VERSION",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||" ",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("
      ")).addClass(c+d.dialogClass).css({display:"none",outline:0,zIndex:d.zIndex}).attr("tabIndex",-1).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}).appendTo("body"),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a("").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(a){a.preventDefault(),b.close(a)}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);i.find("*").add(i).disableSelection(),this._hoverable(j),this._focusable(j),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var a=this,b,c=this.oldPosition;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle),b=c.parent.children().eq(c.index),b.length?b.before(a.element):c.parent.append(a.element)},widget:function(){return this.uiDialog},close:function(b){if(!this._isOpen)return c;var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c._isOpen=!1,c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b._size(),b._position(c.position),d.show(c.show),b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}});var e=b.element.find(":tabbable");e.length||(e=d.find(".ui-dialog-buttonpane :tabbable"),e.length||(e=d)),e.eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1;c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)});if(d){var e=a("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),f=a("
      ").addClass("ui-dialog-buttonset").appendTo(e);a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a("

      + + + + +
      1def listSum(numbers):
      2  if not numbers:
      3    return 0
      4  else:
      5    (f, rest) = numbers
      6    return f + listSum(rest)
      7
      8myList = (1, (2, (3, None)))
      9total = listSum(myList)
      Step 15 of 18
      line that has just executed

      next line to execute

      Program output:
      Frames
      Global variables
      listSum
       
      myList
       
      listSum
      numbers
       
      f1
      rest
       
      listSum
      numbers
       
      f2
      rest
       
      listSum
      numbers
       
      f3
      restNone
      listSum
      numbersNone
      Return
      value
      0
      Objects
      function listSum(numbers)
      tuple
      01
      1
       
      tuple
      01
      2
       
      tuple
      01
      3None
      + + + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js new file mode 100644 index 000000000..edace49e0 --- /dev/null +++ b/v3/commentary-bubbles-demo.js @@ -0,0 +1,418 @@ +// Run: +// python generate_json_trace.py --create_jsvar=listSumTrace tests/backend-tests/list_sum.txt +// and copy-and-paste the output line into here: +var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + + +var qtipShared = { + show: { + ready: true, // show on document.ready instead of on mouseenter + delay: 0, + event: null, + effect: function() {$(this).show();}, // don't do any fancy fading because it screws up with scrolling + }, + hide: { + fixed: true, + event: null, + effect: function() {$(this).hide();}, // don't do any fancy fading because it screws up with scrolling + }, + style: { + classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style + }, +}; + + +function createSpeechBubble(domID, my, at, htmlContent, isInput) { + var hashID = '#' + domID; + $(hashID).qtip($.extend({}, qtipShared, { + content: htmlContent, + id: domID, + position: { + my: my, + at: at, + effect: null, // disable all cutesy animations + }, + })); + + + if (isInput) { + + } + else { + $('#ui-tooltip-' + domID + '-content').click(function() { + if (!$(hashID).data('qtip-minimized')) { + $(hashID) + .data('qtip-minimized', true) + .qtip('option', 'content.text', ' '); + } + else { + $(hashID) + .data('qtip-minimized', false) + .qtip('option', 'content.text', htmlContent); + } + }); + } +} + + +// a speech bubble annotation to attach to: +// 'codeline' - a line of code +// 'frame' - a stack frame +// 'variable' - a variable within a stack frame +// 'object' - an object on the heap +// (as determined by the 'type' param) +// +// domID is the ID of the element to attach to (without the leading '#' sign) +function AnnotationBubble(type, domID) { + this.domID = domID; + this.hashID = '#' + domID; + + this.type = type; + + if (type == 'codeline') { + this.my = 'left center'; + this.at = 'right center'; + } + else if (type == 'frame') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'variable') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'object') { + this.my = 'bottom left'; + this.at = 'top center'; + } + else { + assert(false); + } + + // possible states: + // 'invisible' + // 'edit' + // 'view' + // 'minimized' + // 'stub' + this.state = 'invisible'; + + this.text = ''; // the actual contents of the annotation bubble + + this.qtipHidden = false; // is there a qtip object present but hidden? (TODO: kinda confusing) +} + +AnnotationBubble.prototype.showStub = function() { + assert(this.state == 'invisible' || this.state == 'edit'); + assert(this.text == ''); + + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ' ', + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + }, + style: { + classes: 'ui-tooltip-pgbootstrap ui-tooltip-pgbootstrap-stub' + } + })); + + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + myBubble.showEditor(); + }); + + this.state = 'stub'; +} + +AnnotationBubble.prototype.showEditor = function() { + assert(this.state == 'stub' || this.state == 'view' || this.state == 'minimized'); + + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + + var ta = ''; + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ta, + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + } + })); + + + $(this.qTipContentID()).find('textarea.bubbleInputText') + // set handler when the textarea loses focus + .blur(function() { + myBubble.text = $(this).val().trim(); // strip all leading and trailing spaces + + if (myBubble.text) { + myBubble.showViewer(); + } + else { + myBubble.showStub(); + } + }) + .focus(); // grab focus so that the user can start typing right away! + + this.state = 'edit'; +} + + +AnnotationBubble.prototype.bindViewerClickHandler = function() { + var myBubble = this; + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + if (globalAnnotationMode == 'edit') { + myBubble.showEditor(); + } + else if (globalAnnotationMode == 'view') { + myBubble.minimizeViewer(); + } + else { + assert(false); + } + }); +} + +AnnotationBubble.prototype.showViewer = function() { + assert(this.state == 'edit'); + assert(this.text); // must be non-empty! + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: this.text, + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + } + })); + + this.bindViewerClickHandler(); + this.state = 'view'; +} + + +AnnotationBubble.prototype.minimizeViewer = function() { + assert(this.state == 'view'); + + var myBubble = this; + + $(this.hashID).qtip('option', 'content.text', ' '); //hack to "minimize" its size + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + if (globalAnnotationMode == 'edit') { + myBubble.showEditor(); + } + else if (globalAnnotationMode == 'view') { + myBubble.restoreViewer(); + } + else { + assert(false); + } + }); + + this.state = 'minimized'; +} + +AnnotationBubble.prototype.restoreViewer = function() { + assert(this.state == 'minimized'); + $(this.hashID).qtip('option', 'content.text', this.text); + this.bindViewerClickHandler(); + this.state = 'view'; +} + +// NB: actually DESTROYS the QTip object +AnnotationBubble.prototype.makeInvisible = function() { + assert(this.state == 'stub' || this.state == 'edit'); + this.destroyQTip(); + this.state = 'invisible'; +} + + +AnnotationBubble.prototype.destroyQTip = function() { + $(this.hashID).qtip('destroy'); +} + +AnnotationBubble.prototype.qTipContentID = function() { + return '#ui-tooltip-' + this.domID + '-content'; +} + +AnnotationBubble.prototype.qTipID = function() { + return '#ui-tooltip-' + this.domID; +} + + +AnnotationBubble.prototype.enterEditMode = function() { + assert(globalAnnotationMode == 'edit'); + if (this.state == 'invisible') { + this.showStub(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } + } +} + +AnnotationBubble.prototype.enterViewMode = function() { + assert(globalAnnotationMode == 'view'); + if (this.state == 'stub') { + this.makeInvisible(); + } + else if (this.state == 'edit') { + this.text = $(this.qTipContentID()).find('textarea.bubbleInputText').val().trim(); // strip all leading and trailing spaces + + if (this.text) { + this.showViewer(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } + } + else { + this.makeInvisible(); + } + } +} + +AnnotationBubble.prototype.redrawCodelineBubble = function() { + assert(this.type == 'codeline'); + + if (isOutputLineVisible(this.domID)) { + if (this.qtipHidden) { + $(this.hashID).qtip('show'); + } + else { + $(this.hashID).qtip('reposition'); + } + + this.qtipHidden = false; + } + else { + $(this.hashID).qtip('hide'); + this.qtipHidden = true; + } +} + + +globalAnnotationMode = 'view'; +allBubbles = []; + + +// returns True iff lineNo is visible in pyCodeOutputDiv +// NB: copied, pasted, and modified from isOutputLineVisible in js/pytutor.js +function isOutputLineVisible(lineDivID) { + var pcod = $('#pyCodeOutputDiv'); + + var lineNoTd = $('#' + lineDivID); + var LO = lineNoTd.offset().top; + + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 25)); +} + + +$(document).ready(function() { + /* + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: false, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + return; + */ + + // force vertical code scrolling + $('#pyCodeOutputDiv').css('max-height', '120px'); + + allBubbles.push(new AnnotationBubble('frame', 'v1__globals')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack0')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack1')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack2')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack3')); + + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_1')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_2')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_3')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_4')); + + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod1')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod2')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod3')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod4')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod5')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod6')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod7')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod8')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod9')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__global__listSum_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__global__myList_tr')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__rest_tr')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__rest_tr')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__rest_tr')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4____return___tr')); + + + $('#pyCodeOutputDiv').scroll(function() { + $.each(allBubbles, function(i, e) { + if (e.type == 'codeline') { + e.redrawCodelineBubble(); + } + }); + }); + + + $('#modeToggleBtn').click(function() { + if (globalAnnotationMode == 'view') { + $('#modeToggleBtn').html('View Annotations'); + globalAnnotationMode = 'edit'; + $.each(allBubbles, function(i, e) { + e.enterEditMode(); + }); + } + else if (globalAnnotationMode == 'edit') { + $('#modeToggleBtn').html('Add/Edit Annotations'); + globalAnnotationMode = 'view'; + $.each(allBubbles, function(i, e) { + e.enterViewMode(); + }); + } + else { + assert(false); + } + }); +}); diff --git a/v3/composingprograms.html b/v3/composingprograms.html new file mode 100644 index 000000000..d22161a22 --- /dev/null +++ b/v3/composingprograms.html @@ -0,0 +1,224 @@ + + + + + + + Online Python Tutor - Visualize program execution + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      + [Optional] Sign in with either a Berkeley email or Google account +
      + + +
      + + + +
      +What is this? +[Video] [PDF] +
      + + + + + +
      +
      + +
      + + +
      + +
      Write Python code here:
      +
      +
      +
      + +

      + +

      + +

      +Execute code using + +and + +

      + +
      + + +
      +
      + + + + + + + + + diff --git a/v3/convert_2to3.py b/v3/convert_2to3.py new file mode 100644 index 000000000..d5fb41d69 --- /dev/null +++ b/v3/convert_2to3.py @@ -0,0 +1,90 @@ +# Convert project from Python 2 to Python 3 and test that JSON traces are +# unchanged for all examples. +# +# python3 convert_2to3.py +# +# Runs under Python 2.7 and Python 3.x without 2to3 conversion +# +# Created by John DeNero + +import generate_json_trace +import os +import sys +import json + + +def write_trace(python, example_path, output_path): + '''Use system call to generate a JSON trace using some python binary.''' + example = os.path.split(example_path)[1] + print('Generating JSON for "{0}" with {1}'.format(example, python)) + cmd = '{0} generate_json_trace.py {1} > {2}' + os.system(cmd.format(python, example_path, output_path)) + + +def write_py2_traces(examples_dir, traces_dir): + '''Write JSON traces for all examples using Python 2.7.''' + for path, _, filenames in os.walk(examples_dir): + for example in filenames: + example_path = os.path.join(path, example) + outfile = path.replace(os.path.sep, '_') + '_' + example + output_path = os.path.join(traces_dir, outfile) + write_trace('python2.7', example_path, output_path) + + +def verify_py3_traces(examples_dir, traces_dir): + '''Write and compare JSON traces for all examples using Python 3.''' + diffs = [] + for path, _, filenames in os.walk(examples_dir): + for example in filenames: + example_path = os.path.join(path, example) + outfile = path.replace(os.path.sep, '_') + '_' + example + output_path = os.path.join(traces_dir, outfile + '.py3k') + write_trace('python3', example_path, output_path) + + py2_path = os.path.join(traces_dir, outfile) + py2_result = json.load(open(py2_path)) + py3_result = json.load(open(output_path)) + if py2_result['trace'] != py3_result['trace']: + diffs.append(example) + return diffs + + +known_differences = """Known differences include: + +fib.txt: "while True:" is evaluated once in Python 3, but repeatedly in Python. + +map.txt: 2to3 converts call to map() to a list comprehension. + +OOP*.txt, ll2.txt: __init__ functions orphan a __locals__ dict on the heap in + Python 3, but it is not rendered in the front end. + +wentworth_try_finally.txt: Python 3 integer division is true, not floor. +""" + +if __name__ == '__main__': + examples_dir = 'example-code' + if not os.path.exists(examples_dir): + print('Examples directory {0} does not exist.'.format(examples_dir)) + sys.exit(1) + + traces_dir = examples_dir + '-traces' + if os.path.exists(traces_dir): + print('Testing directory {0} already exists.'.format(traces_dir)) + sys.exit(1) + os.mkdir(traces_dir) + + write_py2_traces(examples_dir, traces_dir) + + # Convert examples to Python 3 + os.system('2to3 -w -n --no-diffs {0}/*.txt {0}/*/*.txt'.format(examples_dir)) + + diffs = verify_py3_traces(examples_dir, traces_dir) + + if diffs: + print('Trace differences for: {0}'.format(diffs)) + print('See {0} for traces.'.format(traces_dir)) + print(known_differences) + else: + print('Traces are identical; cleaning up') + shutil.rm(traces_dir) + diff --git a/v3/create_log_db.py b/v3/create_log_db.py new file mode 100644 index 000000000..52e2f13f8 --- /dev/null +++ b/v3/create_log_db.py @@ -0,0 +1,27 @@ +# Setup sqlite database to support query logging from web_exec.py + +import os, sqlite3 + +DB_FILE = 'opt-query-log.sqlite3' + +def create_db(): + con = sqlite3.connect(DB_FILE) + cur = con.cursor() + + cur.execute('''CREATE TABLE query_log + (id INTEGER PRIMARY KEY, + timestamp TEXT, + ip_addr TEXT, + http_user_agent TEXT, + http_referer TEXT, + user_script TEXT, + cumulative_mode INTEGER)''') + con.commit() + cur.close() + + +if __name__ == "__main__": + assert not os.path.exists(DB_FILE) + create_db() + print('Created ' + DB_FILE) + diff --git a/v3/csc108h.html b/v3/csc108h.html new file mode 100644 index 000000000..9fbfada75 --- /dev/null +++ b/v3/csc108h.html @@ -0,0 +1,159 @@ + + + + + + + Online Python Tutor - Visualize program execution - csc108h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      + + +
      + +
      Write Python code here:
      +
      +
      +
      + +

      + +

      + +
      + + +
      +
      + + + + + diff --git a/v3/csc108h_shared.html b/v3/csc108h_shared.html new file mode 100644 index 000000000..047413224 --- /dev/null +++ b/v3/csc108h_shared.html @@ -0,0 +1,180 @@ + + + + + + + Online Python Tutor - Visualize program execution - csc108h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + + + +
      +
      + +
      + + +
      + +
      Write Python code here:
      +
      +
      +
      + +

      + +

      + +
      + + +
      +
      + + + + + diff --git a/v3/css/2012-08-29-CSS-encapsulation/README b/v3/css/2012-08-29-CSS-encapsulation/README new file mode 100644 index 000000000..8d02a04dd --- /dev/null +++ b/v3/css/2012-08-29-CSS-encapsulation/README @@ -0,0 +1,69 @@ +From me: + +I just thought of a possible solution for those nasty CSS clashes that +you guys are encountering: + +I could prefix all of my python tutor CSS rules with something like +div.ExecutionVisualizer. e.g., + +div.ExecutionVisualizer table td { + ... blah blah ... +} + +and then when the user creates an ExecutionVisualizer object with +JavaScript and passes it a div, I use JavaScript to set its class to +"ExecutionVisualizer". + +Thoughts? + + +--- +From John: + +That's a good idea. It would also be great to establish two different +top-level div classes: one for embedded and one for stand-alone +visualizers. Embedded visualizers typically need to be more densely +laid out, otherwise they eat up the entire page. You can see my css +changes for embedding in the master branch of my fork. + +https://github.com/papajohn/OnlinePythonTutor/blob/master/PyTutorGAE/css/pytutor.css +[downloaded as papajohn-pytutor.css] + +Ideally, I'd add the option of creating an embedded visualizer or a +stand-alone one on construction, and each would be allowed to have +different styles but mostly share the same styles. + + +--- +From Sean: + +Philip, just wondering, could you just make a new container div with the +right class, and stick it into the div passed to your code? This might +be easier than fiddling with the class on the div the user gives, and +I'm also wondering whether there could be unforeseen interactions with +other classes that might have been prespecified on that div. I don't +know what the downsides of the new approach are, though. + +--- +My thoughts: + +- maybe just have a set of css styles for a standalone visualizer, and + then add an option or something to flip a bit to make it embedded ... + if the visualizer is embedded, then use js to set css for certain + attributes + +--- +2012-08-29 email from me to John and Sean: + +Gentlemen - + +I just pushed some changes that implemented: + +- Sean's suggestion of creating a div.ExecutionVisualizer within the root DOM node passed into a new ExecutionVisualizer object, +- prefixing of all CSS rules by div.ExecutionVisualizer +- some of John's modified CSS + +Hopefully CSS clashes are less of a problem from now on. + +However, I still didn't implement John's suggestion for an "embedded CSS mode" yet; right now the best thing to do is to either tweak the CSS manually or to write javascript to dynamically modify the CSS. + diff --git a/v3/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css b/v3/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css new file mode 100644 index 000000000..87a5607dc --- /dev/null +++ b/v3/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css @@ -0,0 +1,487 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +/* Most recent color scheme redesign: 2012-08-19 */ + +table.visualizer { + font-family: Helvetica, sans-serif; + font-size: 10pt; +} + + +td#stack_td, +td#heap_td { + vertical-align:top; + font-size: 10pt; /* don't make fonts in the heap so big! */ +} + +#dataViz { + margin-left: 30px; +} + +table.frameDataViz { + border-spacing: 0px; + font-size: 12pt; + margin-top: 5px; + margin-left: 15px; + background-color: #dddddd; + padding: 5px; +} + +table.frameDataViz td.varname { + text-align: right; + padding: 5px; + padding-right: 8px; + border-right: 1px dashed #888888; +} + +table.frameDataViz td.val { + padding-left: 8px; + padding-right: 5px; + + padding-top: 8px; + padding-bottom: 8px; +} + +div#pyCodeOutputDiv { + max-width: 550px; + max-height: 450px; + overflow: auto; +} + +table#pyCodeOutput { + font-family: Andale mono, monospace; + font-size: 11pt; + line-height: 1.1em; + border-spacing: 0px; + border-top: 1px solid #999999; + padding-top: 3px; + border-bottom: 1px solid #999999; + margin: 6px auto; /* Center code in its pane */ +} + +/* don't wrap lines within code output ... FORCE scrollbars to appear */ +table#pyCodeOutput td { + white-space: nowrap; +} + +table#pyCodeOutput .lineNo { + background-color:#FFFFFF; + color:#AAAAAA; + margin:0; + padding:0.2em; + padding-right:0.5em; + text-align:right; + width:2.1em; +} + +table#pyCodeOutput .cod { + /*font-weight: bold;*/ + margin-left: 3px; + padding-left: 7px; + text-align: left; /* necessary or else doesn't work properly in IE */ +} + +div#editCodeLinkDiv { + text-align: center; + margin: 12px auto; +} + +#editCodeLinkOnError { + color: #142B69; + font-size: 9px; +} + +#errorOutput { + color: #d03939; + /*background-color: #F87D76;*/ + font-size: 12pt; + padding: 2px; + line-height: 1.5em; + margin-bottom: 4px; +} + +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +button.medBtn { + font-size: 12pt; + padding: 3px; +} + + +/* VCR control buttons for stepping through execution */ + +#vcrControls { + margin: 15px auto; + width: 100%; + text-align: center; +} + +#vcrControls button { + margin-left: 5px; + margin-right: 5px; +} + +#pyStdout { + border: 1px solid #999999; + font-size: 12pt; + padding: 4px; + font-family: Andale mono, monospace; +} + +.vizFrame { + margin-bottom: 20px; + padding-left: 8px; + border-left: 2px solid #cccccc; +} + + +/* Rendering of primitive types */ + +.nullObj { + font-size: 8pt; +} + +/* +.numberObj { + font-size: 10pt; +} + +.boolObj { + font-size: 10pt; +} +*/ + +.stringObj, .customObj, .funcObj { + font-family: Andale mono, monospace; + white-space: nowrap; +} + +.retval { + font-size: 9pt; +} + + +/* Rendering of basic compound types */ + +table.listTbl, table.tupleTbl, table.setTbl { + background-color: #ffffc6; +} + + +table.listTbl { + border: 0px solid black; + border-spacing: 0px; +} + +table.listTbl td.listHeader, +table.tupleTbl td.tupleHeader { + padding-left: 4px; + padding-top: 2px; + padding-bottom: 3px; + font-size: 8pt; + color: #777; + text-align: left; + border-left: 1px solid #555555; +} + +table.tupleTbl { + border-spacing: 0px; + color: black; + + border-bottom: 1px solid #555555; /* must match td.tupleHeader border */ + border-top: 1px solid #555555; /* must match td.tupleHeader border */ + border-right: 1px solid #555555; /* must match td.tupleHeader border */ +} + + +table.listTbl td.listElt { + border-bottom: 1px solid #555555; /* must match td.listHeader border */ + border-left: 1px solid #555555; /* must match td.listHeader border */ +} + +table.tupleTbl td.tupleElt { + border-left: 1px solid #555555; /* must match td.tupleHeader border */ +} + +table.customObjTbl { + background-color: white; + color: black; + border: 1px solid black; +} + +table.customObjTbl td.customObjElt { + padding: 5px; +} + +table.listTbl td.listElt, +table.tupleTbl td.tupleElt { + padding-top: 0px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 10px; + vertical-align: bottom; +} + +table.setTbl { + border: 1px solid #555555; + border-spacing: 0px; + text-align: center; +} + +table.setTbl td.setElt { + padding: 8px; +} + + +table.dictTbl, +table.instTbl, +table.classTbl { + border-spacing: 1px; +} + +table.dictTbl td.dictKey, +table.instTbl td.instKey, +table.classTbl td.classKey { + background-color: #faebbf; +} + +table.dictTbl td.dictVal, +table.instTbl td.instVal, +table.classTbl td.classVal { + background-color: #ffffc6; +} + + +table.dictTbl td.dictKey, +table.instTbl td.instKey, +table.classTbl td.classKey { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 4px; + + text-align: right; +} + +table.dictTbl td.dictVal, +table.instTbl td.instVal, +table.classTbl td.classVal { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-right: 10px; + padding-left: 4px; +} + + +table.classTbl td, +table.instTbl td { + border-bottom: 1px #888 solid; +} + +table.classTbl td.classVal, +table.instTbl td.instVal { + border-left: 1px #888 solid; +} + +table.classTbl { + border-collapse: collapse; + border: 1px #888 solid; +} + +/* only add a border to dicts if they're embedded within another object */ +td.listElt table.dictTbl, +td.tupleElt table.dictTbl, +td.dictVal table.dictTbl, +td.instVal table.dictTbl, +td.classVal table.dictTbl { + border: 1px #888 solid; +} + + +.typeLabel { + font-size: 8pt; + color: #222222; + margin-bottom: 1px; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + + +/* new stuff added for Online Python Tutor "2.0" release */ + +div#stack, div#globals_area { + padding-left: 10px; + padding-right: 30px; + + /* no longer necessary ... */ + /*float: left;*/ + /* border-right: 1px dashed #bbbbbb; */ +} + +div.stackFrame, div.zombieStackFrame { + background-color: #ffffff; + margin-bottom: 15px; + padding: 2px; + padding-left: 6px; + padding-right: 6px; + padding-bottom: 4px; + font-size: 10pt; +} + +div.zombieStackFrame { + border-left: 1px dotted #aaa; + /*color: #c0c0c0;*/ + color: #b0b0b0; +} + +div.highlightedStackFrame { + background-color: #c5dfea; +} + +div.stackFrame, div.highlightedStackFrame { + border-left: 2px solid #a6b3b6; +} + + +div.stackFrameHeader { + font-family: Andale mono, monospace; + font-size: 10pt; + margin-top: 4px; + margin-bottom: 3px; + white-space: nowrap; +} + +td.stackFrameVar { + text-align: right; + padding-right: 8px; + padding-top: 3px; + padding-bottom: 3px; +} + +td.stackFrameValue { + text-align: left; + border-bottom: 1px solid #aaaaaa; + border-left: 1px solid #aaaaaa; + + padding-top: 3px; + padding-left: 3px; + padding-bottom: 3px; +} + +.stackFrameVarTable tr { + +} + +.stackFrameVarTable { + text-align: right; + padding-top: 3px; + + /* right-align the table */ + margin-left: auto; + margin-right: 0px; +} + +div#heap { + float: left; + padding-left: 30px; +} + +td.toplevelHeapObject { + /* to make room for transition animations */ + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; + border: 2px dotted white; + border-color: white; /* needed for d3 to do transitions */ +} + +table.heapRow { + margin-bottom: 10px; +} + +div.heapObject { + padding-left: 2px; /* leave a TINY amount of room for connector endpoints */ +} + +div#stackHeader { + margin-bottom: 15px; + text-align: right; +} + +div#heapHeader { + /*margin-top: 2px; + margin-bottom: 13px;*/ + margin-bottom: 15px; +} + +div#stackHeader, +div#heapHeader { + color: #333333; + font-size: 10pt; +} + +#executionSlider { + width: 300px; + margin: 6px auto; +} + +#executionSliderCaption { + font-size: 8pt; + color: #666666; + margin-top: 15px; +} + +#executionSliderFooter { + margin-top: -7px; /* make it butt up against #executionSlider */ +} + + +/* necessary for CodeMirror line highlighting to work! */ +.CodeMirror .errorLine { background: #F89D99 !important; } + + +/* darken slider handle a bit */ +.ui-slider .ui-slider-handle { + border: 1px solid #999; +} diff --git a/v3/css/basic.css b/v3/css/basic.css new file mode 100644 index 000000000..611807f58 --- /dev/null +++ b/v3/css/basic.css @@ -0,0 +1,61 @@ +/* + * SimpleModal Basic Modal Dialog + * http://www.ericmmartin.com/projects/simplemodal/ + * http://code.google.com/p/simplemodal/ + * + * Copyright (c) 2010 Eric Martin - http://ericmmartin.com + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * + * Revision: $Id: basic.css 257 2010-07-27 23:06:56Z emartin24 $ + */ + +.basic-modal-content {display:none;} + +/* Overlay */ +#simplemodal-overlay {background-color:#000; cursor:wait;} + +/* Container */ +.simplemodal-container { + height:200px; + width:300px; + color:#bbb; + background-color:#333; + border:4px solid #444; + padding:5px; +} + +.simplemodal-container .simplemodal-data {padding:8px;} + +.simplemodal-container code { + background:#141414; + border-left:3px solid #65B43D; + color:#bbb; + display:block; + font-size:12px; + margin-bottom:12px; + padding:4px 6px 6px; +} + +.simplemodal-container a {color:#ddd;} + +.simplemodal-container a.modalCloseImg { + background:url(x.png) no-repeat; + width:25px; + height:29px; + display:inline; + z-index:3200; + position:absolute; + top:-15px; + right:-16px; + cursor:pointer;} + +.simplemodal-container h3 { + color:#84b8d9; + text-align: center; +} + +.feedbacktext { + color:#84b8d9; +} diff --git a/v3/css/codemirror.css b/v3/css/codemirror.css new file mode 100644 index 000000000..098a317a2 --- /dev/null +++ b/v3/css/codemirror.css @@ -0,0 +1,272 @@ +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; +} +.CodeMirror-scroll { + /* Set scrolling behaviour here */ + overflow: auto; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* CURSOR */ + +.CodeMirror div.CodeMirror-cursor { + border-left: 1px solid black; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { + width: auto; + border: 0; + background: #7e7; +} +/* Can style cursor different in overwrite (non-insert) mode */ +div.CodeMirror-overwrite div.CodeMirror-cursor {} + +.cm-tab { display: inline-block; } + +.CodeMirror-ruler { + border-left: 1px solid #ccc; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3 {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + line-height: 1; + position: relative; + overflow: hidden; + background: white; + color: black; +} + +.CodeMirror-scroll { + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actuall scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + padding-bottom: 30px; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + -moz-box-sizing: content-box; + box-sizing: content-box; + padding-bottom: 30px; + margin-bottom: -32px; + display: inline-block; + /* Hack to make IE7 behave */ + *zoom:1; + *display:inline; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} + +.CodeMirror-lines { + cursor: text; +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget {} + +.CodeMirror-wrap .CodeMirror-scroll { + overflow-x: hidden; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} +.CodeMirror-measure pre { position: static; } + +.CodeMirror div.CodeMirror-cursor { + position: absolute; + border-right: none; + width: 0; +} + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 1; +} +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } + +.cm-searching { + background: #ffa; + background: rgba(255, 255, 0, .4); +} + +/* IE7 hack to prevent it from returning funny offsetTops on the spans */ +.CodeMirror span { *vertical-align: text-bottom; } + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} diff --git a/v3/css/composingprograms.css b/v3/css/composingprograms.css new file mode 100644 index 000000000..2ece81988 --- /dev/null +++ b/v3/css/composingprograms.css @@ -0,0 +1,25 @@ +/* custom CSS for ../composingprograms.html + + always include this file AFTER pytutor.css +*/ + +div.ExecutionVisualizer table#pyCodeOutput { + font-size:11pt; + white-space: nowrap; +} + +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.zombieStackFrame { + white-space: nowrap; +} + +div.ExecutionVisualizer div.zombieStackFrame { + color: #808080; +} + +/* make the left bars thicker and darker */ +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.highlightedStackFrame { + border-left: 2px solid #686f70; +} + diff --git a/v3/css/holistic.css b/v3/css/holistic.css new file mode 100644 index 000000000..6dbf6e786 --- /dev/null +++ b/v3/css/holistic.css @@ -0,0 +1,181 @@ +/* Created by Irene Chen (2013) */ +div.HolisticVisualizer div#debug::-webkit-scrollbar { + width:9px; +} + +div.HolisticVisualizer div#debug::-webkit-scrollbar-track { + -webkit-border-radius:5px; + border-radius:5px; + background:rgba(0,0,0,0.1); +} + +div.HolisticVisualizer div#debug::-webkit-scrollbar-thumb { + -webkit-border-radius:5px; + border-radius:5px; + background:rgba(0,0,0,0.2); +} + +div.HolisticVisualizer div#debug::-webkit-scrollbar-thumb:hover { + background:rgba(0,0,0,0.4); +} + +div.HolisticVisualizer div#debug::-webkit-scrollbar-thumb:window-inactive { + background:rgba(0,0,0,0.05); +} + +div.HolisticVisualizer { + font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-size: 16px; +} + +div.HolisticVisualizer pre { + margin: 0; +} + +div.HolisticVisualizer div.control { + border :1px solid black; + border-radius: 5px; + display: block; + height: 100px; + margin-bottom: 10px; + margin-left: 10px; + padding: 5px; + width: 240px; +} + +div.HolisticVisualizer #wrapper { + width: 100%; +} + +div.HolisticVisualizer #left { + float: left; + overflow-x: scroll; + overflow-y: hidden; + width: 500px; +} + +div.HolisticVisualizer #right { + width: 100%; + vertical-align: top; +} + +div.HolisticVisualizer #padder { + padding-left: 502px; +} + +div.HolisticVisualizer table#code { + border-collapse: collapse; + font-family: Courier, monospace; + font-size: 11pt; + margin: 1px auto; + vertical-align: top; +} + +div.HolisticVisualizer #code tr, div.HolisticVisualizer #code td { + border-width: 0px; + text-overflow:ellipsis; + -ms-text-overflow:ellipsis; + padding: 0px; +} + +div.HolisticVisualizer #code td.v-hover { + background-color: #b0e0e6; +} + +div.HolisticVisualizer div#slider { + border: 1px solid gray; + display: inline-block; + height: 100%; + overflow-x: scroll; + vertical-align: top; + width: 100%; +} + +div.HolisticVisualizer div#debugPanel { + display: inline-block; + font-size: 10pt; + height: 400px; + vertical-align: top; + width: 400px; +} + +div.HolisticVisualizer div#debug { + height: 90%; + overflow: -moz-scrollbars-vertical; + overflow-y: scroll; +} + +#altContainer { + display: none; +} + +#altVisual { +} + +#holisticTooltip { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -webkit-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4); + background-color: white; + border-radius: 10px; + box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4); + display: none; + height: auto; + padding: 10px; + pointer-events: none; + position: absolute; + width: auto; +} + +#holisticTooltip.hidden { + display: none; +} + +#holisticTooltip p { + margin: 0; + font-family: sans-serif; + font-size: 16px; + line-height: 20px; +} + +div.HolisticVisualizer path { + fill: none; + stroke: steelblue; + stroke-width: 1; +} + +div.HolisticVisualizer .delimiter { + stroke: black; + stroke-opacity: 0.8; + stroke-width: 1px; +} + +div.HolisticVisualizer .h-hover { + fill-opacity: 0; + stroke: black; + stroke-opacity: 0; + stroke-width: 20px; +} + +div.HolisticVisualizer .v-hover { + fill-opacity: 0; +} + +div.HolisticVisualizer .v-guide, div.HolisticVisualizer .h-guide { + stroke: black; + stroke-opacity: 0.4; + stroke-width: 1px; +} + +div.HolisticVisualizer .axis path, +div.HolisticVisualizer .axis line { + fill: none; + stroke: black; + shape-rendering: crispEdges; +} + +div.HolisticVisualizer .axis text { + font-family: sans-serif; + font-size: 11px; +} diff --git a/v3/css/index.css b/v3/css/index.css new file mode 100644 index 000000000..380f05de1 --- /dev/null +++ b/v3/css/index.css @@ -0,0 +1,201 @@ +/* CSS accompanying ../index.html */ + +body { + background-color: white; + + font-family: Georgia, Palatino, Times, serif; + + font-size: 12pt; + + /* use fixed width for simplicity */ + max-width: 900px; + min-width: 900px; + width: 900px; + + margin-left: auto; + margin-right: auto; +} + +/* for prose text only */ +p, li { + line-height: 1.5; +} + +h1 { + font-weight: normal; + margin-top: 0px; + margin-bottom: 8px; + line-height: 1.5; +} + +.smallH1 { + font-size: 14pt; + margin-left: -2px; +} + +#optLink { + font-size: 14pt; + text-decoration: none; + color: #3D58A2; + font-weight: bold; +} + +#optLink:hover { + color: #3D58A2; + text-decoration: underline; +} + +.titlePane { + margin-left: auto; + margin-right: auto; + margin-bottom: 0px; + text-align: center; +} + +.titlePane h1 { + font-size: 22pt; + margin-bottom: 5px; +} + +div.mainBodyPane { + margin-left: auto; + margin-right: auto; +} + +div.activityPane { + /* TOP RIGHT BOTTOM LEFT */ + padding: 15px 0px /* make right padding ZERO and just right-pad 'p' */ 5px 20px; + text-align: left; + border: 3px solid #005583; +} + +div.activityPane p { + padding-right: 30px; +} + +div.activityPane h1 { + font-size: 22pt; + margin-bottom: 20pt; +} + + +ul { + padding-left: 18px; +} + +li { + margin-bottom: 12px; + font-size: 10pt; +} + +a, +a:visited, +a:hover { + color: #3D58A2; +} + +#learnHeading, #embedHeading, #shareHeading { + font-family: verdana, arial, helvetica, sans-serif; + font-weight: bold; + font-size: 24pt; +} + +#learnHeading { + color: #062270; +} + +div#learnPane { + margin-top: 6pt; + margin-bottom: 8pt; + border: 5px solid #062270; +} + +div#learnPane p { + padding-right: 100px; +} + +div#learnPane #startLink { + font-size: 18pt; + font-weight: normal; + margin-top: 30px; + margin-bottom: 35px; + font-family: verdana, arial, helvetica, sans-serif; +} + +div#learnPane #startLink a { + border-bottom-style: solid; + border-bottom-width: 2px; + text-decoration: none; +} + +tt { + /*font-size: 85%;*/ +} + +div#embedPane { + margin-right: 5px; + border: 5px solid #5a7973; +} + + +#embedHeading { + color: #5a7973; +} + +div#sharePane { + margin-left: 5px; + border: 5px solid #4284d3; +} + +#shareHeading { + color: #4284d3; +} + +div#detailsPane { + margin-top: 0px; + margin-left: 5px; + border: 0px; /* NO BORDER! */ +} + +#partnershipDiv { + /*background-color: #d8e1e3;*/ + background-color: #d9cdb6; + width: 60%; + padding: 8px; + margin-left: auto; + margin-right: auto; + text-align: center; + + font-size: 10pt; + font-family: Monaco, arial, sans-serif; +} + +table.layoutTbl { + border: 0px; + max-width: 900px; +} + +table.layoutTbl td#embedPaneTd { + width: 60%; + vertical-align: top; +} + +table.layoutTbl td#sharePaneTd { + width: 40%; + vertical-align: top; +} + + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 0px; + margin-top: 20px; + + /* center align */ + margin-left: auto; + margin-right: auto; + + font-family: verdana, arial, helvetica, sans-serif; +} diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css new file mode 100644 index 000000000..fb7fe24b6 --- /dev/null +++ b/v3/css/jquery.qtip.css @@ -0,0 +1,573 @@ +/*! qTip2 - Pretty powerful tooltips - v2.0.0 - 2012-09-10 +* http://craigsworks.com/projects/qtip2/ +* Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */ + +/* Fluid class for determining actual width in IE */ +#qtip-rcontainer{ + position: absolute; + left: -28000px; + top: -28000px; + display: block; + visibility: hidden; +} + + /* Fluid class for determining actual width in IE */ + #qtip-rcontainer .ui-tooltip{ + display: block !important; + visibility: hidden !important; + position: static !important; + float: left !important; + } + +/* Core qTip styles */ +.ui-tooltip, .qtip{ + position: absolute; + left: -28000px; + top: -28000px; + display: none; + + max-width: 280px; + min-width: 50px; + + font-size: 10.5px; + line-height: 12px; +} + + .ui-tooltip-content{ + position: relative; + padding: 5px 9px; + overflow: hidden; + + text-align: left; + word-wrap: break-word; + } + + .ui-tooltip-titlebar{ + position: relative; + min-height: 14px; + padding: 5px 35px 5px 10px; + overflow: hidden; + + border-width: 0 0 1px; + font-weight: bold; + } + + .ui-tooltip-titlebar + .ui-tooltip-content{ border-top-width: 0 !important; } + + /* Default close button class */ + .ui-tooltip-titlebar .ui-state-default{ + position: absolute; + right: 4px; + top: 50%; + margin-top: -9px; + + cursor: pointer; + outline: medium none; + + border-width: 1px; + border-style: solid; + } + + * html .ui-tooltip-titlebar .ui-state-default{ top: 16px; } /* IE fix */ + + .ui-tooltip-titlebar .ui-icon, + .ui-tooltip-icon .ui-icon{ + display: block; + text-indent: -1000em; + direction: ltr; + } + + .ui-tooltip-icon, .ui-tooltip-icon .ui-icon{ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; + } + + .ui-tooltip-icon .ui-icon{ + width: 18px; + height: 14px; + + text-align: center; + text-indent: 0; + font: normal bold 10px/13px Tahoma,sans-serif; + + color: inherit; + background: transparent none no-repeat -100em -100em; + } + + +/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */ +.ui-tooltip-focus{} + +/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */ +.ui-tooltip-hover{} + +/* Default tooltip style */ +.ui-tooltip-default{ + border-width: 1px; + border-style: solid; + border-color: #F1D031; + + background-color: #FFFFA3; + color: #555; +} + + .ui-tooltip-default .ui-tooltip-titlebar{ + background-color: #FFEF93; + } + + .ui-tooltip-default .ui-tooltip-icon{ + border-color: #CCC; + background: #F1F1F1; + color: #777; + } + + .ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{ + border-color: #AAA; + color: #111; + } + + +/*! Light tooltip style */ +.ui-tooltip-light{ + background-color: white; + border-color: #E2E2E2; + color: #454545; +} + + .ui-tooltip-light .ui-tooltip-titlebar{ + background-color: #f1f1f1; + } + + +/*! Dark tooltip style */ +.ui-tooltip-dark{ + background-color: #505050; + border-color: #303030; + color: #f3f3f3; +} + + .ui-tooltip-dark .ui-tooltip-titlebar{ + background-color: #404040; + } + + .ui-tooltip-dark .ui-tooltip-icon{ + border-color: #444; + } + + .ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/*! Cream tooltip style */ +.ui-tooltip-cream{ + background-color: #FBF7AA; + border-color: #F9E98E; + color: #A27D35; +} + + .ui-tooltip-cream .ui-tooltip-titlebar{ + background-color: #F0DE7D; + } + + .ui-tooltip-cream .ui-state-default .ui-tooltip-icon{ + background-position: -82px 0; + } + + +/*! Red tooltip style */ +.ui-tooltip-red{ + background-color: #F78B83; + border-color: #D95252; + color: #912323; +} + + .ui-tooltip-red .ui-tooltip-titlebar{ + background-color: #F06D65; + } + + .ui-tooltip-red .ui-state-default .ui-tooltip-icon{ + background-position: -102px 0; + } + + .ui-tooltip-red .ui-tooltip-icon{ + border-color: #D95252; + } + + .ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{ + border-color: #D95252; + } + + +/*! Green tooltip style */ +.ui-tooltip-green{ + background-color: #CAED9E; + border-color: #90D93F; + color: #3F6219; +} + + .ui-tooltip-green .ui-tooltip-titlebar{ + background-color: #B0DE78; + } + + .ui-tooltip-green .ui-state-default .ui-tooltip-icon{ + background-position: -42px 0; + } + + +/*! Blue tooltip style */ +.ui-tooltip-blue{ + background-color: #E5F6FE; + border-color: #ADD9ED; + color: #5E99BD; +} + + .ui-tooltip-blue .ui-tooltip-titlebar{ + background-color: #D0E9F5; + } + + .ui-tooltip-blue .ui-state-default .ui-tooltip-icon{ + background-position: -2px 0; + } + + +/* Add shadows to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-shadow{ + -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); +} + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-rounded, +.ui-tooltip-tipsy, +.ui-tooltip-bootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +/* Youtube tooltip style */ +.ui-tooltip-youtube{ + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 3px #333; + -moz-box-shadow: 0 0 3px #333; + box-shadow: 0 0 3px #333; + + color: white; + border-width: 0; + + background: #4A4A4A; + background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black)); + background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%); +} + + .ui-tooltip-youtube .ui-tooltip-titlebar{ + background-color: #4A4A4A; + background-color: rgba(0,0,0,0); + } + + .ui-tooltip-youtube .ui-tooltip-content{ + padding: .75em; + font: 12px arial,sans-serif; + + filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000); + -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"; + } + + .ui-tooltip-youtube .ui-tooltip-icon{ + border-color: #222; + } + + .ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* jQuery TOOLS Tooltip style */ +.ui-tooltip-jtools{ + background: #232323; + background: rgba(0, 0, 0, 0.7); + background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323)); + background-image: -moz-linear-gradient(top, #717171, #232323); + background-image: -webkit-linear-gradient(top, #717171, #232323); + background-image: -ms-linear-gradient(top, #717171, #232323); + background-image: -o-linear-gradient(top, #717171, #232323); + + border: 2px solid #ddd; + border: 2px solid rgba(241,241,241,1); + + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 12px #333; + -moz-box-shadow: 0 0 12px #333; + box-shadow: 0 0 12px #333; +} + + /* IE Specific */ + .ui-tooltip-jtools .ui-tooltip-titlebar{ + background-color: transparent; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"; + } + .ui-tooltip-jtools .ui-tooltip-content{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"; + } + + .ui-tooltip-jtools .ui-tooltip-titlebar, + .ui-tooltip-jtools .ui-tooltip-content{ + background: transparent; + color: white; + border: 0 dashed transparent; + } + + .ui-tooltip-jtools .ui-tooltip-icon{ + border-color: #555; + } + + .ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{ + border-color: #333; + } + + +/* Cluetip style */ +.ui-tooltip-cluetip{ + -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + + background-color: #D9D9C2; + color: #111; + border: 0 dashed transparent; +} + + .ui-tooltip-cluetip .ui-tooltip-titlebar{ + background-color: #87876A; + color: white; + border: 0 dashed transparent; + } + + .ui-tooltip-cluetip .ui-tooltip-icon{ + border-color: #808064; + } + + .ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{ + border-color: #696952; + color: #696952; + } + + +/* Tipsy style */ +.ui-tooltip-tipsy{ + background: black; + background: rgba(0, 0, 0, .87); + + color: white; + border: 0 solid transparent; + + font-size: 11px; + font-family: 'Lucida Grande', sans-serif; + font-weight: bold; + line-height: 16px; + text-shadow: 0 1px black; +} + + .ui-tooltip-tipsy .ui-tooltip-titlebar{ + padding: 6px 35px 0 10; + background-color: transparent; + } + + .ui-tooltip-tipsy .ui-tooltip-content{ + padding: 6px 10; + } + + .ui-tooltip-tipsy .ui-tooltip-icon{ + border-color: #222; + text-shadow: none; + } + + .ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* Tipped style */ +.ui-tooltip-tipped{ + border: 3px solid #959FA9; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + background-color: #F9F9F9; + color: #454545; + + font-weight: normal; + font-family: serif; +} + + .ui-tooltip-tipped .ui-tooltip-titlebar{ + border-bottom-width: 0; + + color: white; + background: #3A79B8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D)); + background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D); + background-image: -moz-linear-gradient(top, #3A79B8, #2E629D); + background-image: -ms-linear-gradient(top, #3A79B8, #2E629D); + background-image: -o-linear-gradient(top, #3A79B8, #2E629D); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"; + } + + .ui-tooltip-tipped .ui-tooltip-icon{ + border: 2px solid #285589; + background: #285589; + } + + .ui-tooltip-tipped .ui-tooltip-icon .ui-icon{ + background-color: #FBFBFB; + color: #555; + } + + +/** + * Twitter Bootstrap style. + * + * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11. + * Does not work with IE 7. + */ +.ui-tooltip-bootstrap{ + font-size: 13px; + line-height: 18px; + + color: #333333; + background-color: #ffffff; + + + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + + *border-right-width: 2px; + *border-bottom-width: 2px; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .ui-tooltip-bootstrap .ui-tooltip-titlebar{ + font-size: 18px; + line-height: 22px; + + border-bottom: 1px solid #ccc; + background-color: transparent; + } + + .ui-tooltip-bootstrap .ui-tooltip-titlebar .ui-state-default{ + right: 9px; top: 49%; + border-style: none; + } + + .ui-tooltip-bootstrap .ui-tooltip-icon{ + background: white; + } + + .ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon{ + width: auto; + height: auto; + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon:hover{ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + +/* IE9 fix - removes all filters */ +.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content, +.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{ + filter: none; + -ms-filter: none; +} + + +/* Tips plugin */ +.ui-tooltip .ui-tooltip-tip{ + margin: 0 auto; + overflow: hidden; + z-index: 10; +} + + .ui-tooltip .ui-tooltip-tip, + .ui-tooltip .ui-tooltip-tip .qtip-vml{ + position: absolute; + + line-height: 0.1px !important; + font-size: 0.1px !important; + color: #123456; + + background: transparent; + border: 0 dashed transparent; + } + + .ui-tooltip .ui-tooltip-tip canvas{ top: 0; left: 0; } + + .ui-tooltip .ui-tooltip-tip .qtip-vml{ + behavior: url(#default#VML); + display: inline-block; + visibility: visible; + } +/* Modal plugin */ +#qtip-overlay{ + position: fixed; + left: -10000em; + top: -10000em; +} + + /* Applied to modals with show.modal.blur set to true */ + #qtip-overlay.blurs{ cursor: pointer; } + + /* Change opacity of overlay here */ + #qtip-overlay div{ + position: absolute; + left: 0; top: 0; + width: 100%; height: 100%; + + background-color: black; + + opacity: 0.7; + filter:alpha(opacity=70); + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + } + diff --git a/v3/css/matrixtutor.css b/v3/css/matrixtutor.css new file mode 100644 index 000000000..46e4957a7 --- /dev/null +++ b/v3/css/matrixtutor.css @@ -0,0 +1,21 @@ +/* custom CSS for ../matrixtutor.html + + always include this file AFTER pytutor.css +*/ + +#testInputPane { + margin-top: 5px; + font-size: 12pt; + border: 1px solid #ddd; +} + +#gradingPane { + margin-top: 20px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + diff --git a/v3/css/opt-frontend.css b/v3/css/opt-frontend.css new file mode 100644 index 000000000..e0f9b585d --- /dev/null +++ b/v3/css/opt-frontend.css @@ -0,0 +1,167 @@ +/* CSS accompanying ../visualize.html */ + +h1 { + font-weight: normal; + font-size: 20pt; + font-family: georgia, serif; + line-height: 1em; /* enforce single spacing so that Georgia works */ + + margin-top: 0px; + margin-bottom: 8px; +} + +h2 { + font-size: 12pt; + font-weight: normal; + font-family: georgia, serif; + line-height: 1.1em; /* enforce single spacing so that Georgia works */ + + margin-top: 2px; + margin-bottom: 20px; +} + + +body { + background-color: white; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; +} + +a, +a:visited, +a:hover { + color: #3D58A2; +} + +span { + padding: 0px; +} + +table#pyOutputPane { + padding: 10px; +} + +#pyInputPane, #loadingPane { + margin-top: 10px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#codeInputPane { + margin-top: 5px; + font-size: 12pt; + border: 1px solid #ddd; +} + +button.smallBtn { + font-size: 10pt; + padding: 3px; +} + +button.bigBtn { + font-size: 12pt; + padding: 6px; + margin-top: 6px; +} + +button.surveyBtn { + font-size: 8pt; + margin-top: 8px; +} + +#footer { + color: #888888; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#frontendErrorOutput { + color: #e93f34; /* should match brightRed JavaScript variable */ + font-size: 12pt; + line-height: 1.5em; + margin-top: 8px; +} + +.togetherjsBtn { + color: #b80000; + font-size: 11pt; + padding: 5px; + margin-top: 6px; +} + +#syncBtn { + font-size: 8pt; + margin-left: 10px; +} + +#experimentalHeader { + margin-bottom: 10px; +} + +/* necessary for CodeMirror error line highlighting to work! */ +.CodeMirror .errorLine { background: #ffff3f !important; } + + +/* from http://rog.ie/blog/css-star-rater */ +.star-rating { + font-size: 0; + white-space: nowrap; + display: inline-block; + /* pgbovine - scale this appropriately with a 5:1 ratio */ + width: 100px; + height: 20px; + overflow: hidden; + position: relative; + background: url('data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjREREREREIiBwb2ludHM9IjEwLDAgMTMuMDksNi41ODMgMjAsNy42MzkgMTUsMTIuNzY0IDE2LjE4LDIwIDEwLDE2LjU4MyAzLjgyLDIwIDUsMTIuNzY0IDAsNy42MzkgNi45MSw2LjU4MyAiLz48L3N2Zz4='); + background-size: contain; +} +.star-rating i { + opacity: 0; + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 20%; + z-index: 1; + background: url('data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIgaGVpZ2h0PSIyMHB4IiB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cG9seWdvbiBmaWxsPSIjRkZERjg4IiBwb2ludHM9IjEwLDAgMTMuMDksNi41ODMgMjAsNy42MzkgMTUsMTIuNzY0IDE2LjE4LDIwIDEwLDE2LjU4MyAzLjgyLDIwIDUsMTIuNzY0IDAsNy42MzkgNi45MSw2LjU4MyAiLz48L3N2Zz4='); + background-size: contain; +} +.star-rating input { + -moz-appearance: none; + -webkit-appearance: none; + opacity: 0; + display: inline-block; + width: 20%; + height: 100%; + margin: 0; + padding: 0; + z-index: 2; + position: relative; +} +.star-rating input:hover + i, +.star-rating input:checked + i { + opacity: 1; +} +.star-rating i ~ i { + width: 40%; +} +.star-rating i ~ i ~ i { + width: 60%; +} +.star-rating i ~ i ~ i ~ i { + width: 80%; +} +.star-rating i ~ i ~ i ~ i ~ i { + width: 100%; +} diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css new file mode 100644 index 000000000..02c07e950 --- /dev/null +++ b/v3/css/opt-lessons.css @@ -0,0 +1,85 @@ +/* CSS accompanying ../lesson.html */ + +body { + background-color: white; + + font-family: verdana, arial, helvetica, sans-serif; + + font-size: 10pt; + + max-width: 900px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +div#lessonHeader { + margin-bottom: 15pt; + width: 800px; +} + +div#lessonTitle { + font-size: 16pt; + margin-bottom: 15pt; +} + +div#lessonDescription { + font-size: 11pt; + line-height: 1.5em; +} + +div#lessonNarration { + font-size: 11pt; + min-height: 25px; + margin-bottom: 12px; + line-height: 1.5em; + width: 800px; +} + + +a, +a:visited, +a:hover { + color: #3D58A2; +} + +span { + padding: 0px; +} + +table#pyOutputPane { + padding: 10px; +} + +#pyInputPane { + margin-top: 20px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#codeInputPane { + margin-top: 5px; + font-size: 12pt; +} + +button.smallBtn { + font-size: 10pt; + padding: 3px; +} + +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +#footer { + color: #666; + font-size: 9pt; + border-top: 1px solid #bbb; + padding-top: 12px; + margin-top: 5px; +} diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css new file mode 100644 index 000000000..4576e940b --- /dev/null +++ b/v3/css/pytutor.css @@ -0,0 +1,771 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +/* Most recent color scheme redesign on 2012-08-19 */ + +/* To prevent CSS namespace clashes, prefix all rules with: + div.ExecutionVisualizer +*/ + + +/* reset some styles to nullify effects of existing stylesheets + e.g., http://meyerweb.com/eric/tools/css/reset/ +*/ +div.ExecutionVisualizer { + /* none for now */ +} + +div.ExecutionVisualizer table.visualizer { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; + margin-bottom: 10px; +} + +div.ExecutionVisualizer table.visualizer td.vizLayoutTd { + vertical-align: top; +} + +div.ExecutionVisualizer td#stack_td, +div.ExecutionVisualizer td#heap_td { + vertical-align:top; + font-size: 10pt; /* don't make fonts in the heap so big! */ +} + +div.ExecutionVisualizer #dataViz { + margin-left: 25px; +} + +div.ExecutionVisualizer div#codeDisplayDiv { + /* set this as default unless user specifies a custom size */ + width: 550px; +} + +div.ExecutionVisualizer div#pyCodeOutputDiv { + /*max-width: 550px;*/ + max-height: 450px; + /*max-height: 620px;*/ + overflow: auto; + /*margin-bottom: 4px;*/ + + margin-left: auto; + margin-right: auto; +} + +div.ExecutionVisualizer table#pyCodeOutput { + font-family: Andale mono, monospace; + font-size:12pt; + line-height:1.1em; + + border-collapse: separate; /* some crazy CSS voodoo that needs to be + there so that SVG arrows to the left + of the code line up vertically in Chrome */ + border-spacing: 0px; + border-top: 1px solid #bbb; + padding-top: 3px; + border-bottom: 1px solid #bbb; + /*margin-top: 6px;*/ + margin: 6px auto; /* Center code in its pane */ +} + +/* don't wrap lines within code output ... FORCE scrollbars to appear */ +div.ExecutionVisualizer table#pyCodeOutput td { + white-space: nowrap; + vertical-align: middle; /* explicitly force, to override external CSS conflicts */ +} + +div.ExecutionVisualizer #leftCodeGutterSVG { + width: 18px; + min-width: 18px; /* make sure it doesn't squash too thin */ + height: 0px; /* programmatically set this later ... IE needs this to + be 0 or it defaults to something arbitrary and gross */ +} + +div.ExecutionVisualizer #prevLegendArrowSVG, +div.ExecutionVisualizer #curLegendArrowSVG { + width: 18px; + height: 10px; +} + +div.ExecutionVisualizer .arrow { + font-size: 16pt; +} + +div.ExecutionVisualizer table#pyCodeOutput .lineNo { + color: #aaa; + padding: 0.2em; + padding-left: 0.3em; + padding-right: 0.5em; + text-align: right; +} + +div.ExecutionVisualizer table#pyCodeOutput .cod { + /*font-weight: bold;*/ + margin-left: 3px; + padding-left: 7px; + text-align: left; /* necessary or else doesn't work properly in IE */ +} + +div.ExecutionVisualizer div#progOutputs { + margin-top: 8px; +} + +div.ExecutionVisualizer div#legendDiv { + margin-top: 10px; + padding: 0px; + text-align: left; + color: #666; + font-size: 9pt; +} + +div.ExecutionVisualizer div#editCodeLinkDiv { + text-align: center; + /* + margin-top: 12px; + margin-bottom: 4px; + */ + margin: 8px auto; + font-size: 11pt; +} + +div.ExecutionVisualizer div#annotateLinkDiv { + /*text-align: left;*/ + margin-top: 0px; + margin-bottom: 12px; + /* + margin-left: auto; + margin-right: auto; + */ +} + +div.ExecutionVisualizer div#stepAnnotationDiv { + margin-bottom: 12px; +} + +div.ExecutionVisualizer textarea#stepAnnotationEditor, +div.ExecutionVisualizer textarea#vizTitleEditor, +div.ExecutionVisualizer textarea#vizDescriptionEditor { + border: 1px solid #999999; + padding: 4px; + + overflow: auto; /* to look pretty on IE */ + /* make sure textarea doesn't grow and stretch */ + resize: none; +} + + +div.ExecutionVisualizer #errorOutput { + color: #e93f34; /* should match brightRed JavaScript variable */ + font-size: 12pt; + padding: 2px; + line-height: 1.5em; + margin-bottom: 4px; +} + +/* VCR control buttons for stepping through execution */ + +div.ExecutionVisualizer #vcrControls { + margin: 15px auto; + /*width: 100%;*/ + text-align: center; +} + +div.ExecutionVisualizer #vcrControls button { + margin-left: 2px; + margin-right: 2px; +} + +div.ExecutionVisualizer #vcrControls #curInstr { + margin-left: 4px; + margin-right: 4px; +} + +div.ExecutionVisualizer #pyStdout { + border: 1px solid #999999; + font-size: 12pt; + padding: 4px; + font-family: Andale mono, monospace; + + overflow: auto; /* to look pretty on IE */ + /* make sure textarea doesn't grow and stretch */ + resize: none; +} + + +div.ExecutionVisualizer .vizFrame { + margin-bottom: 20px; + padding-left: 8px; + border-left: 2px solid #cccccc; +} + + +/* Rendering of primitive types */ + +div.ExecutionVisualizer .nullObj { +// font-size: 8pt; +} + +div.ExecutionVisualizer .stringObj, +div.ExecutionVisualizer .customObj, +div.ExecutionVisualizer .funcObj { + font-family: Andale mono, monospace; + white-space: nowrap; +} + +div.ExecutionVisualizer .retval { + font-size: 9pt; +} + +div.ExecutionVisualizer .stackFrame .retval { + color: #e93f34; /* highlight non-zombie stack frame return values - + should match brightRed JavaScript variable */ +} + +/* Rendering of basic compound types */ + +div.ExecutionVisualizer table.listTbl, +div.ExecutionVisualizer table.tupleTbl, +div.ExecutionVisualizer table.setTbl { + background-color: #ffffc6; +} + + +div.ExecutionVisualizer table.listTbl { + border: 0px solid black; + border-spacing: 0px; +} + +div.ExecutionVisualizer table.listTbl td.listHeader, +div.ExecutionVisualizer table.tupleTbl td.tupleHeader { + padding-left: 4px; + padding-top: 2px; + padding-bottom: 3px; + font-size: 8pt; + color: #777; + text-align: left; + border-left: 1px solid #555555; +} + +div.ExecutionVisualizer table.tupleTbl { + border-spacing: 0px; + color: black; + + border-bottom: 1px solid #555555; /* must match td.tupleHeader border */ + border-top: 1px solid #555555; /* must match td.tupleHeader border */ + border-right: 1px solid #555555; /* must match td.tupleHeader border */ +} + + +div.ExecutionVisualizer table.listTbl td.listElt { + border-bottom: 1px solid #555555; /* must match td.listHeader border */ + border-left: 1px solid #555555; /* must match td.listHeader border */ +} + +div.ExecutionVisualizer table.tupleTbl td.tupleElt { + border-left: 1px solid #555555; /* must match td.tupleHeader border */ +} + +div.ExecutionVisualizer table.customObjTbl { + background-color: white; + color: black; + border: 1px solid black; +} + +div.ExecutionVisualizer table.customObjTbl td.customObjElt { + padding: 5px; +} + +div.ExecutionVisualizer table.listTbl td.listElt, +div.ExecutionVisualizer table.tupleTbl td.tupleElt { + padding-top: 0px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 10px; + vertical-align: bottom; +} + +div.ExecutionVisualizer table.setTbl { + border: 1px solid #555555; + border-spacing: 0px; + text-align: center; +} + +div.ExecutionVisualizer table.setTbl td.setElt { + padding: 8px; +} + + +div.ExecutionVisualizer table.dictTbl, +div.ExecutionVisualizer table.instTbl, +div.ExecutionVisualizer table.classTbl { + border-spacing: 1px; +} + +div.ExecutionVisualizer table.dictTbl td.dictKey, +div.ExecutionVisualizer table.instTbl td.instKey, +div.ExecutionVisualizer table.classTbl td.classKey { + background-color: #faebbf; +} + +div.ExecutionVisualizer table.dictTbl td.dictVal, +div.ExecutionVisualizer table.instTbl td.instVal, +div.ExecutionVisualizer table.classTbl td.classVal { + background-color: #ffffc6; +} + + +div.ExecutionVisualizer table.dictTbl td.dictKey, +div.ExecutionVisualizer table.instTbl td.instKey, +div.ExecutionVisualizer table.classTbl td.classKey { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 4px; + + text-align: right; +} + +div.ExecutionVisualizer table.dictTbl td.dictVal, +div.ExecutionVisualizer table.instTbl td.instVal, +div.ExecutionVisualizer table.classTbl td.classVal { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-right: 10px; + padding-left: 4px; +} + + +div.ExecutionVisualizer table.classTbl td, +div.ExecutionVisualizer table.instTbl td { + border-bottom: 1px #888 solid; +} + +div.ExecutionVisualizer table.classTbl td.classVal, +div.ExecutionVisualizer table.instTbl td.instVal { + border-left: 1px #888 solid; +} + +div.ExecutionVisualizer table.classTbl { + border-collapse: collapse; + border: 1px #888 solid; +} + +/* only add a border to dicts if they're embedded within another object */ +div.ExecutionVisualizer td.listElt table.dictTbl, +div.ExecutionVisualizer td.tupleElt table.dictTbl, +div.ExecutionVisualizer td.dictVal table.dictTbl, +div.ExecutionVisualizer td.instVal table.dictTbl, +div.ExecutionVisualizer td.classVal table.dictTbl { + border: 1px #888 solid; +} + +div.ExecutionVisualizer .objectIdLabel { + font-size: 8pt; + color: #444; + margin-bottom: 2px; +} + +div.ExecutionVisualizer .typeLabel { + font-size: 8pt; + color: #555; + margin-bottom: 2px; +} + +div.ExecutionVisualizer div#stack, +div.ExecutionVisualizer div#globals_area { + padding-left: 10px; + padding-right: 30px; + + /* no longer necessary ... */ + /*float: left;*/ + /* border-right: 1px dashed #bbbbbb; */ +} + +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.zombieStackFrame { + background-color: #ffffff; + margin-bottom: 15px; + padding: 2px; + padding-left: 6px; + padding-right: 6px; + padding-bottom: 4px; + font-size: 10pt; +} + +div.ExecutionVisualizer div.zombieStackFrame { + border-left: 1px dotted #aaa; + /*color: #c0c0c0;*/ + color: #a0a0a0; +} + +div.ExecutionVisualizer div.highlightedStackFrame { + background-color: #e2ebf6; + /*background-color: #d7e7fb;*/ + + /*background-color: #c0daf8;*/ + /*background-color: #9eeaff #c5dfea;*/ +} + +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.highlightedStackFrame { + border-left: 1px solid #a6b3b6; +} + + +div.ExecutionVisualizer div.stackFrameHeader { + font-family: Andale mono, monospace; + font-size: 10pt; + margin-top: 4px; + margin-bottom: 3px; + white-space: nowrap; +} + +div.ExecutionVisualizer td.stackFrameVar { + text-align: right; + padding-right: 8px; + padding-top: 3px; + padding-bottom: 3px; +} + +div.ExecutionVisualizer td.stackFrameValue { + text-align: left; + border-bottom: 1px solid #aaaaaa; + border-left: 1px solid #aaaaaa; + + vertical-align: middle; + + padding-top: 3px; + padding-left: 3px; + padding-bottom: 3px; +} + +div.ExecutionVisualizer .stackFrameVarTable tr { + +} + +div.ExecutionVisualizer .stackFrameVarTable { + text-align: right; + padding-top: 3px; + + /* right-align the table */ + margin-left: auto; + margin-right: 0px; + + /* hack to counteract possible nasty CSS reset styles from parent divs */ + border-collapse: separate; + border-spacing: 2px; +} + +div.ExecutionVisualizer div#heap { + float: left; + padding-left: 30px; +} + +div.ExecutionVisualizer td.toplevelHeapObject { + /* needed for d3 to do transitions */ + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; + /* + border: 2px dotted white; + border-color: white; + */ +} + +div.ExecutionVisualizer table.heapRow { + margin-bottom: 10px; +} + +div.ExecutionVisualizer div.heapObject { + padding-left: 2px; /* leave a TINY amount of room for connector endpoints */ +} + +div.ExecutionVisualizer div.heapPrimitive { + padding-left: 4px; /* leave some more room for connector endpoints */ +} + +div.ExecutionVisualizer div#stackHeader { + margin-bottom: 15px; + text-align: right; +} + +div.ExecutionVisualizer div#heapHeader { + /*margin-top: 2px; + margin-bottom: 13px;*/ + margin-bottom: 15px; +} + +div.ExecutionVisualizer div#stackHeader, +div.ExecutionVisualizer div#heapHeader { + color: #333333; + font-size: 10pt; +} + +div.ExecutionVisualizer #executionSlider { + /* if you set 'width', then it looks ugly when you dynamically resize */ + margin-top: 15px; + margin-bottom: 5px; + + margin-left: auto; + margin-right: auto; + + width: 95%; +} + +div.ExecutionVisualizer #executionSliderCaption { + font-size: 8pt; + color: #666666; + margin-top: 15px; +} + +div.ExecutionVisualizer #executionSliderFooter { + margin-top: -7px; /* make it butt up against #executionSlider */ +} + + +/* darken slider handle a bit */ +div.ExecutionVisualizer .ui-slider .ui-slider-handle { + border: 1px solid #999; +} + + +/* for annotation bubbles */ + +/* For styling tricks, see: http://css-tricks.com/textarea-tricks/ */ +textarea.bubbleInputText { + border: 1px solid #ccc; + outline: none; + overflow: auto; /* to look pretty on IE */ + + /* make sure textarea doesn't grow and stretch the enclosing bubble */ + resize: none; + width: 225px; + max-width: 225px; + height: 35px; + max-height: 35px; +} + + +.ui-tooltip-pgbootstrap, +textarea.bubbleInputText { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 9pt; + line-height: 1.3em; +} + + +/* modified version of Twitter bootstrap style by Philip Guo */ +.ui-tooltip-pgbootstrap{ + color: #333; + background-color: #ffffff; + + max-width: 250px; + min-width: 10px; + + border: 2px solid #4284D3; + + cursor: pointer; + + *border-right-width: 2px; + *border-bottom-width: 2px; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + /* way too poofy ... + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + */ + + -webkit-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar{ + font-size: 18px; + line-height: 22px; + + border-bottom: 1px solid #ccc; + background-color: transparent; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-content{ + padding: 5px /* 5px is minimum or else it might look ugly */ 8px; + } + + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{ + right: 9px; top: 49%; + border-style: none; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon{ + background: white; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon{ + width: auto; + height: auto; + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon:hover{ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-pgbootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + + +.ui-tooltip-pgbootstrap-stub{ + border: 1px solid #999; + + /* + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + */ +} + + .ui-tooltip-pgbootstrap-stub .ui-tooltip-content{ + padding: 6px 9px; + } + + +div.ExecutionVisualizer .annotationText, +div.ExecutionVisualizer .vizDescriptionText { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 11pt; + line-height: 1.5em; +} + +div.ExecutionVisualizer .vizTitleText { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 16pt; + margin-bottom: 12pt; +} + +div.ExecutionVisualizer div#vizHeader { + margin-bottom: 10px; + width: 700px; + max-width: 700px; +} + +/* prev then curr, so curr gets precedence when both apply */ +div.ExecutionVisualizer .highlight-prev { + background-color: #F0F0EA; +} + +div.ExecutionVisualizer .highlight-cur { + background-color: #FFFF66; +} + +div.ExecutionVisualizer .highlight-legend { + padding: 2px; +} + +/* resizing sliders from David Pritchard */ +.ui-resizable-e { + background-color: #dddddd; + width: 1px; + border: 3px solid white; +} + +.ui-resizable-e:hover { + border-color: #dddddd; +} + +div.ExecutionVisualizer div#rawUserInputDiv { + padding: 5px; + width: 95%; + margin: 5px auto; + text-align: center; + border: 1px #e93f34 solid; +} + +/* for pyCrazyMode */ + +/* prev then curr, so curr gets precedence when both apply */ +div.ExecutionVisualizer .pycrazy-highlight-prev { + background-color: #eeeeee; /*#F0F0EA;*/ + /* + text-decoration: none; + border-bottom: 1px solid #dddddd; + */ +} + +div.ExecutionVisualizer .pycrazy-highlight-cur { + background-color: #FFFF66; + /* aligned slightly higher than border-bottom */ + /* + text-decoration: none; + border-bottom: 1px solid #e93f34; + */ +} + +div.ExecutionVisualizer .pycrazy-highlight-prev-and-cur { + background-color: #FFFF66; + + text-decoration: none; + border-bottom: 1px solid #999999; +} + + +#optTabularView thead.stepTableThead { + background-color: #bbb; +} + +#optTabularView tbody.stepTableTbody { +} + +#optTabularView td.stepTableTd { + padding: 3px 10px; +} diff --git a/v3/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 000000000..954e22dbd Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 000000000..64ece5707 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/v3/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 000000000..abdc01082 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 000000000..9b383f4d2 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png new file mode 100644 index 000000000..a23baad25 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 000000000..42ccba269 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/v3/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 000000000..39d5824d6 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/v3/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 000000000..f1273672d Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ diff --git a/v3/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/v3/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png new file mode 100644 index 000000000..359397acf Binary files /dev/null and b/v3/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ diff --git a/v3/css/ui-lightness/images/ui-icons_222222_256x240.png b/v3/css/ui-lightness/images/ui-icons_222222_256x240.png new file mode 100644 index 000000000..b273ff111 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-icons_222222_256x240.png differ diff --git a/v3/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/v3/css/ui-lightness/images/ui-icons_228ef1_256x240.png new file mode 100644 index 000000000..a641a371a Binary files /dev/null and b/v3/css/ui-lightness/images/ui-icons_228ef1_256x240.png differ diff --git a/v3/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/v3/css/ui-lightness/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 000000000..85e63e9f6 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-icons_ef8c08_256x240.png differ diff --git a/v3/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/v3/css/ui-lightness/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 000000000..e117effa3 Binary files /dev/null and b/v3/css/ui-lightness/images/ui-icons_ffd27a_256x240.png differ diff --git a/v3/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/v3/css/ui-lightness/images/ui-icons_ffffff_256x240.png new file mode 100644 index 000000000..42f8f992c Binary files /dev/null and b/v3/css/ui-lightness/images/ui-icons_ffffff_256x240.png differ diff --git a/v3/css/ui-lightness/jquery-ui-1.8.21.custom.css b/v3/css/ui-lightness/jquery-ui-1.8.21.custom.css new file mode 100644 index 000000000..1bc08fb33 --- /dev/null +++ b/v3/css/ui-lightness/jquery-ui-1.8.21.custom.css @@ -0,0 +1,316 @@ +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +/* pgbovine - switch border from #dddddd to #ccc */ +.ui-widget-content { border: 1px solid #ccc; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } + +/* pgbovine - eliminate hover colors */ +/* +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +*/ + +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Slider 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css b/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css new file mode 100644 index 000000000..f3988bcea --- /dev/null +++ b/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css @@ -0,0 +1,335 @@ +/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +/* pgbovine - switch border from #dddddd to #ccc */ +.ui-widget-content { border: 1px solid #ccc; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } + +/* pgbovine - eliminate hover colors */ +/* +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +*/ + +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Resizable 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*! + * jQuery UI Slider 1.8.24 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/v3/css/x.png b/v3/css/x.png new file mode 100644 index 000000000..c11f7af69 Binary files /dev/null and b/v3/css/x.png differ diff --git a/v3/docs/chris-meyers.md b/v3/docs/chris-meyers.md new file mode 100644 index 000000000..d92ccbec7 --- /dev/null +++ b/v3/docs/chris-meyers.md @@ -0,0 +1,27 @@ +Starting in Summer 2013, Chris has been adding support for +[custom HTML rendering modules](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/html-rendering.md) +in Online Python Tutor. His first two modules were: + +- [htmlFrame.py](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/htmlFrame.py) +- [matrix.py](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/matrix.py) + + +### Chris Meyers short bio (Sep 2013) ### + +I have been a software engineer for most of my working life, primarily in the newspaper industry. I've recently retired and now live in both Eugene Oregon and Bremen Germany. + +I received a BA in Physics from the University of Oregon and later a Masters degree in Computer Science. + +I've been using Python since 1995 and it has been by far my favorite programming language +since then. At the newspaper where I worked (The Register Guard) we used it whenever we could, +and especially with tools such as Django. + +I have been part of the open source community. I was a co-author for the book ["How to Think like a Computer Scientist (Python)"](http://www.openbookproject.net/thinkcs/python/english2e/) +along with Allen Downey and Jeff Elkner in 2002. +I also have a web page [Python for Fun][p4f] aimed at intermediate programmers and students. + +[p4f]: http://www.openbookproject.net/py4fun + +This latest project with Philip has been fun and challenging. +Online Python Tutor has been a great success in helping people visualize code running and we hope this addition will help with the visualization of whole algorithms running as well. + diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md new file mode 100644 index 000000000..027d8476d --- /dev/null +++ b/v3/docs/developer-overview.md @@ -0,0 +1,271 @@ +# Overview for Developers + +This document is a starting point for anyone who wants to hack on +Online Python Tutor (thereafter abbreviated as OPT). View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md + +Look at the Git history to see when this document was last updated; the more time +elapsed since that date, the more likely things are out-of-date. + +I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, +so I won't do much hand-holding in these directions. + +This guide isn't meant to be comprehensive; rather, it's just a starting point for learning about the code +and development workflow. You will undoubtedly still be confused about details after reading it, so +feel free to email philip@pgbovine.net if you have questions. + +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + + +## Getting Started: Running OPT locally on your machine + +When you check out OPT from GitHub, it's configured by default to run on Google App Engine +(but it can also run fine on a CGI-enabled webserver such as Apache). + +To run a local instance, download/install +the Google App Engine [Python SDK](https://developers.google.com/appengine/downloads) +for your OS and then run: + + cd OnlinePythonTutor/ + dev_appserver.py v3/ + +Now if you visit http://localhost:8080/ on your browser, you should see the main OPT editor screen. + +Congrats! Now you can edit any code in `OnlinePythonTutor/v3/` and reload the page to test your changes. +You don't need to shut down and restart the local webserver after every edit. + +btw, using the default configuration, http://localhost:8080/ is actually loading the `v3/visualize.html` HTML file. +(See `v3/pythontutor.py` for details.) + +The benefit of running OPT locally is that you can test all changes without going online. So even +if you're eventually going to deploy on something other than Google App Engine, it still makes sense to install locally +for development and testing. The main caveat here is that Google App Engine currently runs Python 2.7, +so you won't be able to test Python 3 locally this way. + +Here is a [blog post by a Hacker School student](http://theworldsoldestintern.wordpress.com/2012/10/15/installing-online-python-tutor-on-your-laptop-localhost8080/) +who set up OPT on his Ubuntu laptop. (btw [Hacker School](http://www.hackerschool.com/) is worth checking out!) + + +## Alternative setup: Running OPT locally using bottle + +Google App Engine works only with Python 2, not Python 3. So if you want to run with Python 3 as well, +first install the [bottle](http://bottlepy.org/) micro web framework: + + pip install bottle + +And then run: + + cd OnlinePythonTutor/v3/ + python bottle_server.py + +If all goes well, you should see the main Python Tutor page at http://localhost:8080/ + +However, **only** run this app locally for testing, not in production, since security checks are disabled. + + +## Overall system architecture + +OPT consists of a pure-Python backend and an HTML/CSS/JavaScript frontend. +Here is a typical user interaction sequence: + +1. The user visits [visualize.html](http://pythontutor.com/visualize.html) and types in Python code in the web-based text editor. +2. The user hits the "Visualize execution" button. +3. The OPT frontend sends the user's Python code as a string to the backend by making an Ajax GET request. +4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger, produces an execution trace, and sends that trace back to the frontend in JSON format. +5. The frontend switches to a visualization display, parses the execution trace, and renders the appropriate stack frames, heap objects, and pointers. +6. When the user interacts with the frontend by stepping through execution points, the frontend renders the proper data structures **without** making another subsequent call to the backend. + +All relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently-active version. + +The frontend consists of: +``` +visualize.html +css/opt-frontend.css +js/opt-frontend.js +css/pytutor.css +js/pytutor.js + +``` + +`pytutor.[js|css]` contain the bulk of the OPT frontend code. In theory, you should be able to **embed** an +OPT visualization into any webpage with one line of JavaScript that looks like: + +```javascript +var v = new ExecutionVisualizer(domRoot, traceFromBackend, optionalParams); +``` + +Thus, the design of `pytutor.[js|css]` is meant to be as modular as possible, which means abstracting +everything in an `ExecutionVisualizer` class. This way, you can create multiple visualizer objects +to embed on the same webpage without them interfering with one another. + +`opt-frontend.[js|css]` contain code that is specific to the `visualize.html` page and doesn't make sense for, say, +embedding OPT visualizations into other webpages. + +The backend consists of: +``` +pg_logger.py - the main entry point to the OPT backend +pg_encoder.py - encodes the trace format into JSON to send to frontend +generate_json_trace.py - script to test the backend independent of the frontend +app.yaml, pythontutor.py - files for deploying on Google App Engine +web_exec.py - example CGI script for deploying backend on CGI-enabled webservers +``` + +The backend works with both Python 2 and 3. + +## Hacking the backend + +To modify the backend, you will mainly need to understand `pg_logger.py` and `pg_encoder.py`. + + +### Two quick tips for starters + +Since the backend's details might change, rather than documenting every last detail, I'd rather equip you with +the knowledge needed to experiment with the code yourself, since that knowledge is less likely to get outdated. + +First, run `generate_json_trace.py` to see the trace that the backend generates for a given input Python program. +This is the main way to do an "end-to-end" test on your backend modifications. For example, if you want the backend +to process a Python program stored in `example.py`, then run: + +``` +python generate_json_trace.py example.py +``` + +Doing so will print a JSON-formatted execution trace to stdout. +This data is exactly what the backend sends to the frontend. +(Actually not quite: The sent trace is actually compressed to eliminate all extraneous spaces and newlines. +But for testing purposes, I've made the trace more human-readable.) + +Second, when you're "print debugging" in the backend, you can't simply print to stdout, since `pg_logger.py` +*redirects* stdout to a buffer. Instead, you need to write all of your print statements as: + +```python +print >> sys.stderr, +``` + +so that the output goes to stderr. + +The easiest way to debug or investigate how some part of the code works is to **insert in print statements (to stderr) +and then run `generate_json_trace.py` on small code examples**. Trust me -- being able to do this is way more +effective than memorizing detailed documentation (which could be outdated by the time you read it). + + +### Backend control flow + +Let's now trace through a typical backend run to get a sense of how it works. + +The main entry point is this function in `pg_logger.py`: + +```python +def exec_script_str(script_str, cumulative_mode, finalizer_func): +``` + +`script_str` contains the entire string contents of the Python program for the backend to execute. +Ignore `cumulative_mode` for now (just set it to `False`). `finalizer_func` is the function to call +after the backend is done generating a trace. + +Let's look at how `generate_json_trace.py` calls `exec_script_str` (using a simplified version of its code): + +```python +# simplified version of generate_json_trace.py +import pg_logger, json + +def json_finalizer(input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=2) + print(json_output) + +pg_logger.exec_script_str(open("example.py").read(), False, json_finalizer) +``` + +In this simplified example, the script opens `example.py`, reads its contents into a string, and passes that string +into `exec_script_str`. The finalizer function is `json_finalizer`, which takes two parameters -- +the original code from `example.py` (`input_code`) and the execution trace that it produced (`output_trace`) -- +inserts both into a dict, encodes that dict as a JSON object, and then prints that JSON object to stdout. +That's why when you run `generate_json_trace.py`, its output is a JSON object printed to stdout. + +Note that if you pass in another finalizer function, then you can do other actions like postprocessing +the output trace or saving it to a file rather than printing to stdout. + +Now that you know what's passed into `exec_script_str` and what comes out of it, let's dive into its guts +to see how that all-important execution trace (`output_trace`) is produced. +Here is the code for `exec_script_str` in `pg_logger.py`: + +```python +def exec_script_str(script_str, cumulative_mode, finalizer_func): + logger = PGLogger(cumulative_mode, finalizer_func) + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + logger.finalize() +``` + +This code creates a `PGLogger` object then calls its `_runscript` method to run the user's program (from `example.py`), +which is passed in as `script_str`. +After execution finishes (possibly due to a bdb-related exception), the `finalize` method is run. This method +does some postprocessing of the trace (`self.trace`) and then finally calls the user-supplied `finalizer_func`. + +`PGLogger` is a subclass of [bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb), +which is the Python standard debugger module. It stores lots of fields to record what +is going on as it executes the program that the user passed in as `script_str`. Its `_runscript` method +is where the action starts. This method first sets up a sandboxed environment containing a restricted +set of builtins (`user_builtins`) and redirection for stdout (`user_stdout`), and then executes this code: + +```python +try: + self.run(script_str, user_globals, user_globals) +except SystemExit: + raise bdb.BdbQuit +``` + +The `self.run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). +It executes the contents of `script_str` in a modified global environment (`user_globals`). + +Ok, the debugger has just started executing the program that the user passed in (from `example.py` in our example). +What happens now? Here's where the magic happens. Look at the methods called +`user_call`, `user_return`, `user_exception`, and `user_line`. Again, those are all +[inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb); +take a minute to read up on what they're supposed to do. + +As the user's program is running, bdb +will pause execution at every function call, return, exception, and single-line step (most common). +It then transfers control over to the respective handler method. +Since `PGLogger` overrides those handler methods, it can hijack control at +crucial points during program execution to do what it needs to do. + +Since `PGLogger` does similar things regardless of why execution was paused (function call, return, exception, or single-line step), +all handlers dispatch to a giant method called `interaction`. + +During a call to `interaction`, the backend collects the state of the stack and all run-time data and then creates a +trace entry (`trace_entry` dict). Then it appends `trace_entry` onto `self.trace`: + +```python +self.trace.append(trace_entry) +``` + +Every time bdb pauses the user's program's execution and dispatches to `interaction` in `PGLogger`, one new trace +entry is created. At the end of execution, `self.trace` contains as many trace entries as there were "steps" +in the user's program execution. Each step more-or-less corresponds to one line being executed. +(To guard against infinite loops, `PGLogger` terminates execution when `MAX_EXECUTED_LINES` steps have been executed.) + +### Execution Trace Format + +A lot of complicated stuff happens within `interaction` to grab a snapshot of the execution state and encode +it into an execution trace entry. Insert a bunch of print statements (remember, to stderr) to get a sense of what's going on. + +In addition, I've written up a separate document describing the exact format of an execution trace: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + + +### Backend regression tests + +If you're paranoid about your backend changes breaking stuff, please bug me, and I'll write up docs +on how to run the regression test suite. + + +## Hacking the frontend + +(TODO: write me sometime!) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md new file mode 100644 index 000000000..d03e6afa7 --- /dev/null +++ b/v3/docs/embedding-HOWTO.md @@ -0,0 +1,86 @@ +# Embedding Online Python Tutor visualizations + +This document is a starting point for anyone who wants to embed +Online Python Tutor (OPT) visualizations in their webpage. View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md + +Look at the Git history to see when this document was last updated; the more time +elapsed since that date, the more likely things are out-of-date. + +I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, +so I won't do much hand-holding in these directions. + +This guide isn't meant to be comprehensive; you will undoubtedly still +be confused about details after reading it, so feel free to email +philip@pgbovine.net if you have questions. + +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + +## iframe embedding + +An easy (although somewhat limited) way to embed an OPT visualization on your website is to enclose it within an [iframe](http://www.w3schools.com/tags/tag_iframe.asp). + +If you generate a visualization (e.g., click here) +and then click the "Generate embed code" button at the bottom of the page, the following code will be generated: + +```html + +``` + +If you copy-and-paste the above code into your HTML webpage, then it will embed the given visualization as an iframe. + +See `v3/iframe-embed-demo.html` for a working demo showing several embedded iframes ([online here](http://pythontutor.com/iframe-embed-demo.html)). + + +### iframe embedding parameters + +You can customize the iframe's size by adjusting the `width` and `height` parameters. All other parameters are passed +after the hash mark (`#` character) in the `src=` URL string. Note that OPT uses the hash mark rather than the usual +question mark `?` query string. Here are the currently-supported parameters: + +- `code` - The Python code to visualize (mandatory: URL-encoded string) +- `py` - Python interpreter version (mandatory: `2` for Python 2.7 or `3` for Python 3.2) +- `verticalStack` - Set to `true` if you want the code and visualization to stack atop one another (optional) +- `curInstr` - A (zero-indexed) integer of the execution point to directly jump to in the visualization (optional) +- `cumulative` - Set to `true` if you want exited functions to be displayed (optional) + + + +## Direct embedding + +The iframe-based approach has some limitations (e.g., hard to dynamically resize the enclosing iframe, +cannot run while offline, limited parameter choices). +Here are instructions for a more powerful but harder-to-use alternative -- directly embedding visualizations. + + +### High-Level Overview + +To directly embed a visualization, you: + +1. Run the target Python program offline to generate an execution trace, which is one (really, really long) +string representing a JavaScript (JSON) object. +2. Copy that long string into a JavaScript .js file. +3. Include some other stuff in your .js file and then embed it within your HTML webpage. + +Note that the embedded visualization is **read-only** -- that is, the user can interact with the visualization +by stepping forward and backward, but they cannot edit the code. +If the user wants to click the 'Edit code' button to edit the code, then they are +brought to the [code editor page](http://pythontutor.com/visualize.html). + +Also, note that the visualization is run client-side; thus, after the user loads the webpage (from the Internet +or, say, a USB drive), they can play with the visualization without an Internet connection. + +Finally, multiple visualizations can be embedded in a single HTML webpage, although you need to be careful +to redraw the SVG arrows when page elements are resized or moved. + +### The Nitty-Gritty + +Let's attempt to go [literate programming](http://en.wikipedia.org/wiki/Literate_programming) style now ... load up +[embedding-demo.html](http://pythontutor.com/embedding-demo.html) in +your browser to see a demo. And then view its [source code](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) and follow the instructions there, +which should then lead you to `v3/embedding-demo.js`. + +Everything you need to know should be in the demo code! diff --git a/v3/docs/embedding-HOWTO.txt b/v3/docs/embedding-HOWTO.txt new file mode 100644 index 000000000..49944948d --- /dev/null +++ b/v3/docs/embedding-HOWTO.txt @@ -0,0 +1,4 @@ +This document has been moved to embedding-HOWTO.md + +View it online at: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md diff --git a/v3/docs/html-rendering.md b/v3/docs/html-rendering.md new file mode 100644 index 000000000..f115a2240 --- /dev/null +++ b/v3/docs/html-rendering.md @@ -0,0 +1,74 @@ +# HTML rendering in Online Python Tutor + +As of May 2013, Online Python Tutor contains an experimental magic +`setHTML` function that lets your scripts render HTML to the canvas (and +accompanying `setJS` and `setCSS` functions for JavaScript and CSS, +respectively). + +Here is a +simple example +of `setHTML` at work. + +Let's step through the code: + + + # display a bunch of big red numbers + setCSS('.bigText {font-size: 80pt; color: red;}') + + for i in range(5): + setHTML('
      %d
      ' % i) + + # now display an image from my website + setHTML('') + + +The first call to `setCSS` defines a `bigText` CSS class with a giant font and red color. +Then the code iterates through a loop five times and calls `setHTML` to set the HTML canvas +to contain a single `div` of class `bigText` with the loop index as its contents. Finally, +the code makes one final `setHTML` call to set the canvas to an image from my personal website. + + +## Creating external modules + +It's really tedious to write out all of the HTML rendering code in the OPT input text box. +Thus, the best way to take advantage of HTML rendering is to define a custom +module to encapsulate all of the rendering code. Here is an example module: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/htmlexample_module.py + +This example module defines a `ColorTable` class that represents a table whose cells +can be filled in with colors. Each time the `render_HTML` method is called, OPT +renders the contents of the table as an HTML table whose cells are filled in with +the respective colors. + +Here is +an example +of this module in action: + + from htmlexample_module import ColorTable + + t = ColorTable(3, 4) + + t.set_color(0, 0, 'red') + t.render_HTML() + + t.set_color(1, 1, 'green') + t.render_HTML() + + t.set_color(2, 2, 'blue') + t.render_HTML() + + for i in range(3): + for j in range(4): + t.set_color(i, j, 'gray') + t.render_HTML() + +If you step through the code in OPT, you'll see an HTML table appearing below the code +and getting gradually filled in with colors. + +To get this module working with OPT, you need to first add its filename +(e.g., 'htmlexample_module') to the CUSTOM_MODULE_IMPORTS variable in pg_logger.py, approximately here: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/pg_logger.py#L119 + +To create your own custom modules, simply follow the conventions I've laid out with `htmlexample_module.py`! diff --git a/v3/docs/make_visualizations.md b/v3/docs/make_visualizations.md new file mode 100644 index 000000000..90d9ec55e --- /dev/null +++ b/v3/docs/make_visualizations.md @@ -0,0 +1,96 @@ +# Using make_visualizations.py to build visualization embeddings + +The program `make_visualizations.py` can be used to simplify the task of building visualization embeddings. The user can describe the required details as a `.json` file (a 'Makefile') and `make_visualizations.py` is a 'make' program that will build all the required visualizations and supporting bookkeeping. + +For an example of how to use this program and to embed visualizations we will assume that the current working directory contains the `.html` files that will have visualizations embedded in them, that the sub-directory `examples` contains all the python files that are to be visualized and that the sub-directories `js` and `css` have been created. Further assume `$OPT` is the directory containing the OPT release. + +The first step is to copy across some `.js` files and `.css` files. + + cp -r $OPT/js/* js + cp -r $OPT/css/* css + +The next step is to create the Makefile - say `make_viz.json` and to add the required information to the file. An example of such a file is given below. The required visualizations can be built as follows. + + python $OPT/make_visualizations.py make_viz.json + +Calling this again will rebuild everything. Alternatively, the program can be used to build visualizations for particular `.html` files listed in `make_viz.json` by listing them at the end of the command. For example + + python $OPT/make_visualizations.py make_viz.json file1.html file3.html + +For the example we assume the `.html` files are `file1.html`, `file2.html` and `file3.html` and that `file1.html` will have visualizations for `prog1_1.py` and `prog1_2.py`; `file2.html` will have a visualization for `prog2_1.py`; and `file3.html` will have a visualization for `prog3_1.py`. Further we assume that a local OPT server has been set up at the URL http://my.local.server/visualize.html. + +The following is a possible example for `make_viz.json` + + { + "visualizer_url": + "http://my.local.server/visualize.html", + + "default_viz_config": + { + "embeddedMode": true, + "codeDivWidth": 500 + }, + + "file1.html": + [ + "js/file1.js", + { + "examples/prog1_1.py":{}, + "examples/prog1_2.py":{"codeDivWidth": 400} + } + ], + + # hash to end of line is a comment + + "file2.html": + [ + "js/file2.js", + { + "examples/prog2_1.py":{} + } + ], + + "file3.html": + [ + "js/file3.js", + { + "examples/prog3_1.py":{"codeDivWidth": ""} + } + ] + } + +The first entry specifies the location of the server. If this is not present, the default is http://pythontutor.com/visualize.html. + +The second entry is the default configuration for the visualization paramenter used for the given html files. If this is not present the visualization parameters are set to the system defaults. + +All other top-level entries are for the `.html` files. The information for a given `.html` file consists of a `.js` file in which to put the trace and other bookkeeping information and a dictionary containing information for each program. The key is the file and the value is for visualization parameters. Any parameters given here override the corresponding value for the parameter in `default_viz_config`. The special value of the empty string removes that parameter from `default_viz_config`. In this example, when visualizing `prog1_2.py`, the code textbox width will be reduced to 400 pixels and for `prog3_1.py`, the code textbox width will be set to the system-wide default. + +If you already have a visualization set up and you would like to use this approach you will need to remove the OPT dependencies before `` in the `.html` file. When you then run the 'make' program it will re-introduce the dependencies in such a way that subseqent makes will replace this information with the updated information. + +At the end of the dependencies information injected into the `.html` file is a comment containing div entries that you can cut-and-paste into the position within the `.html` file where you would like the visualization to appear. The Makefile does not know where this is to be added and so this step needs to be done manually. Re-making this file will not remove this infomation from the body of the file. So, for example, in the header of `file3.html` you should find +the following. + + + + +For reference, we list the possible visualization parameters (with system-wide defaults - based on comments in `pytutor.js`) below. + +- heightChangeCallback: the function to call whenever the height of the visualization changes. If using the make program this is hard-wired in and can't be changed. +- updateOutputCallback: the function to call before rendering output. Disabled for the make program. +- executeCodeWithRawInputFunc: function to call when you want to re-execute the given program with some new user input. Disabled for the make program. +- embeddedMode: if true, it is a shorthand for hideOutput = true, allowEditAnnotations = false (default : false) +- startingInstruction: the trace entry to start execution at (0-indexed) (default : 0). +- verticalStack: if true then place code display above visualization, else place side-by-side (default: false) +- jumpToEnd: if true jump to the end of execution - the same as setting startingInstruction to the last trace entry (default:false). +- codeDivWidth: the width of the code text window in pixels (default : 350). +- codeDivHeight: the height of the code text window in pixels (default : 400). +- hideOutput: hide "Program output" display (default : false). +- editCodeBaseURL: the URL to visit when the user clicks 'Edit code'. +- allowEditAnnotations: allow user to edit per-step annotations (default: false). +- disableHeapNesting: if true, then render all heap objects at the top level (i.e., no nested objects) (default : true). +- drawParentPointer: if true, then draw environment diagram parent pointers for all frames (default : true). +- textualMemoryLabels: render references using textual memory labels rather than as jsPlumb arrows (default : true). +- showOnlyOutputs: show only program outputs and NOT internal data structures (default : true). diff --git a/v3/docs/opt-graphterm.md b/v3/docs/opt-graphterm.md new file mode 100644 index 000000000..e201f593b --- /dev/null +++ b/v3/docs/opt-graphterm.md @@ -0,0 +1,35 @@ +R. Saravanan from Texas A&M has integrated Online +Python Tutor with his [GraphTerm](http://code.mindmeldr.com/graphterm/) +project! + +Here is a brief message from him on how to set it up: + +------ + +I teach python to undergrads and my students have enjoyed using +PythonTutor to trace programs. I have modified PythonTutor slightly to +work within GraphTerm, which is a graphical terminal for unix computers +(written in python, of course!). So if you use the command line, you can +now trace your programs visually within the terminal. + +To install it and run it, use the following three commands on a Mac or Linux system: + + sudo easy_install graphterm + sudo gterm_setup # To setup the toolchain + gtermserver --terminal + +This will run the GraphTerm server and open up a browser terminal +window. In that window, you can `cd` to the directory containing the +program you want to trace (say `example.py`), and then type: + + gtutor example.py | gframe -f + +The first command outputs the HTML created by PythonTutor and the second +command renders it within the terminal (in an iframe). Click on the X on +the top right to end tracing. You can find more information in the +[GraphTerm project +page](http://code.mindmeldr.com/graphterm/start.html#code-tracing-using-python-tutor) + +You can see a live demo of Inline PythonTutor in this [older YouTube +video](http://youtu.be/jmrmjC1VYsc) (about 1:20 after the start) + diff --git a/v3/docs/opt-tabular-view.jpg b/v3/docs/opt-tabular-view.jpg new file mode 100644 index 000000000..fdb00a5c4 Binary files /dev/null and b/v3/docs/opt-tabular-view.jpg differ diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md new file mode 100644 index 000000000..a6cf9dcfa --- /dev/null +++ b/v3/docs/opt-trace-format.md @@ -0,0 +1,750 @@ +# Execution Trace Format + +This document describes the execution trace format that serves as the +interface between the frontend and backend of Online Python Tutor +(thereafter abbreviated as OPT). + +It is a starting point for anyone who wants to create a different +backend (e.g., for another programming language) or a different frontend +(e.g., for visually-impaired students). View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + +Look at the Git history to see when this document was last updated; the +more time elapsed since that date, the more likely things are +out-of-date. + +I'm assuming that you're competent in Python, JSON, command-line-fu, and +Google-fu. Feel free to email philip@pgbovine.net if you have questions. + +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + + +## Trace Overview + +Before you continue reading, I suggest for you to first skim the Overview for Developers doc: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md + +Pay particular attention to what `generate_json_trace.py` is and how to run it: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md#two-quick-tips-for-starters + +Let's start with a simple example. Create an `example.py` file with the following contents: +```python +x = 5 +y = 10 +z = x + y +``` + +Now run: +``` +python generate_json_trace.py example.py +``` + +and you should see the following output: +```javascript +{ + "code": "x = 5\ny = 10\nz = x + y\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 15 + }, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} +``` + +Recall that when OPT is deployed on a webserver, the backend generates this trace and sends it to the frontend, +where it will be turned into a visualization. + +[Click here](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=0) +to see the visualization of this trace (open it in a new window if possible). +Note that the trace object contains *all* of the information required to create this visualization. + +The trace is a JSON object with two fields: `code` is the string contents of the code +to be visualized, and `trace` is the actual execution trace, which consists of a list of execution points. + +In the above example, `trace` is a list of four elements since there are four execution points. +If you step through the visualization, you'll notice that there are exactly four steps, one for each +element of the `trace` list. +(Sometimes the frontend will filter out some redundant entries in `trace`, but a simplifying assumption +is that `trace.length` is the number of execution steps that the frontend renders.) + +Ok, still with me? Let's now dig into what an individual element in `trace` looks like. + + +## Execution Point Objects + +The central type of object in a trace is an "execution point", which represents the state of the computer's (abstract) +memory at a certain point in execution. Recall that a trace is an ordered list of execution points. + +The key concept to understand is that the frontend renders an execution point by simply looking at +the contents of the corresponding execution point object, **without consulting any of its neighbors**. + +Ok, let's now look at the **four** execution points in our above example in order. The first point +is what the frontend visualizes when it says "Step 1 of 3": + +```javascript + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + } +``` + +This is pretty much what an "empty" execution point object looks like. `line` shows the line number of the +line that is *about to execute*, which is line 1 in this case. And `event` is `step_line`, which indicates +that an ordinary single-line step event is about to occur. `func_name` is the function that's currently +executing: In this case, `` is the faux name for top-level code that's not in any function. +All of the other fields are empty, and if you look at the visualization, nothing is rendered in the "Frames" +or "Objects" panes. + +Ok now let's look at the second point, which corresponds to the frontend visualization when it says +"Step 2 of 3": + +```javascript + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + } +``` + +Ok note that `line` is now 2, which means that line 2 is *about* to execute (yes, this convention is a bit confusing, +but it's what the bdb debugger gives us). `globals` is now populated with one key-value pair: the global variable +`x` has a value of `5`. That makes sense since we just executed line 1 (from the previous execution point), +which was the code `x = 5`. If you look at the +[visualization at this step](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=1), +you'll see that `x` has been assigned to `5`. + +Ok let's keep marching to the next execution point, which is the one that corresponds to "Step 3 of 3" +in the frontend: + +```javascript + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + } +``` + +Now `line` is 3, because we're about to execute line 3 (we just executed lines 1 and 2). Notice that there is a +new key-value pair in`globals` showing that `y` has been assigned to `10`. No surprises here, since we just +executed the line `y = 10`. + +Ok now this is where I want to talk about `ordered_globals`, which is a list of global variables (i.e., +keys in `globals`) in the order that the frontend should visualize them. The backend appends variable +names in their order of appearance throughout execution. Why is this list necessary? Because `globals` +is an object whose keys are unsorted, so if you don't also keep an `ordered_globals` sorted list, +then the visualization might end up being jarring. For instance, at one execution point, it might +render `x` and then `y`, and at the next execution point, it might render `y` and then `x`, thereby +causing the visualization to "jitter" unnecessarily. And I've found that it looks aesthetically pleasing +when variables are sorted in their order of appearance as you step forwards through execution. + +Still with me? Ok, let's get to the final execution point, which corresponds to the frontend displaying +"Program terminated" ([click here](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=3) +to jump directly there). + +```javascript + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 15 + }, + "heap": {}, + "line": 3, + "event": "return" + } +``` + +This time, the event is a `return`, which signifies "returning" from the top-level module code (meaning the program +has terminated). Note that now there is another new variable `z`, which is bound to `15` since `z = x + y` just executed. +Note that, again, `ordered_globals` shows all three variables in their order of appearance. + +Ok, that's it for the basic tour. Next let's talk about what happens when the `heap` field isn't empty. + + +## Heap Objects + +The previous example contained only primitive values that JSON could encode directly within the `globals` object. +JSON natively supports numbers, strings, and boolean values (which map well to Python's "primitive" data types). +But what happens when the user's program contains compound +Python data types such as lists, tuples, dicts, sets, etc.? + +Create an `example.py` file with the following contents: +```python +x = [1, 2, 3] +y = ('Alice', 'Bob', 'Cindy') +z = {'carrot': 'vegetable', 'mouse': 'animal', 'rock': 'mineral'} +``` + +You should know how to generate a trace by now. The trace again contains **four** elements since there are +four execution steps (one for the very beginning of execution plus three executed lines). + +"Step 1 of 3" is boring since nothing is displayed. Let's jump to "Step 2 of 3" +(click here) + +The visualization now shows `x` pointing to a list containing `[1, 2, 3]`. This is the corresponding execution +point object: + +```javascript + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + } +``` + +Note that in `globals`, `x` now refers to a `["REF", 1]` object, which means a *reference* (pointer) to a heap +object with an ID of 1. + +Let's now look at `heap`, which is a mapping of heap object IDs to their contents. The current heap has one +object with an ID of 1. That object is a list of [1, 2, 3], which is encoded in JSON as: + +```javascript +["LIST", 1, 2, 3] +``` + +Let's skip forward to the end of execution ("Program terminated"): +click here + +Now there are three variables -- `x` points to a list, `y` points to a tuple, and `z` points to a dict. +This execution point object is getting kinda big: + +```javascript + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + "Alice", + "Bob", + "Cindy" + ], + "3": [ + "DICT", + [ + "carrot", + "vegetable" + ], + [ + "mouse", + "animal" + ], + [ + "rock", + "mineral" + ] + ] + }, + "line": 3, + "event": "return" + } +``` + +Note that in `globals`, `x` refers to heap object 1, `y` to heap object 2, and `z` to 3. If you then look at `heap`, +you'll see that objects 1, 2, and 3 map to the corresponding list, tuple, and dict, respectively. + +Look at the comments at the top of `pg_encoder.py` to learn the JSON encoding formats for various Python data types: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/pg_encoder.py + +The basic idea behind the encoding format is that each compound object is encoded as a JSON list +where the first element is a string "tag" identifying its type (e.g., "LIST", "TUPLE", "DICT"). + +## Heap-to-Heap References + +In the above example, the heap objects contained only primitives (numbers and strings), which can be directly +encoded within those objects' representations in `heap`. + +But heap objects can themselves point to other heap objects. Let's look at the following example: + +```python +c = (1, (2, None)) +d = (1, c) +``` + +Jump to the end of execution and notice that: + +- `c` points to a tuple +- the second element of that tuple points to another tuple +- `d` points to a tuple whose second element points to what `c` points to + +Let's look at the execution point object that corresponds to this visualization: + +```javascript + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } +``` + +What's going on here? Let's start with `globals` again. `c` points to heap object 1 (`["REF", 1]`), and `d` points +to heap object 3 (`["REF", 3]`). + +Let's now look at `heap`. Heap object 1 is: + +```javascript +["TUPLE", 1, ["REF", 2]] +``` + +What does this mean? It means that it represents a tuple whose first element is the number `1` and whose +second element is a reference (pointer) to heap object 2. + +Ok let's look at heap object 2: + +```javascript +["TUPLE", 2, null] +``` + +which corresponds to the Python tuple object `(2, None)`. + +Finally, heap object 3 (which `d` points to) is: + +```javascript +["TUPLE", 1, ["REF", 1]] +``` + +which corresponds to the Python object `(1, c)`. + +The ability to put "REF" objects inside of heap objects enables an arbitrary object graph to be +represented in the execution trace. + + +## Capturing `stdout` Output + +The `stdout` field in an execution point object represents the sum total of all output sent to stdout +so far during execution. For example, given this program: + +```python +print 1 +print "two" +print (3, 4, 5) +``` + +The complete trace object is: + +```javascript +{ + "code": "print 1\nprint \"two\"\nprint (3, 4, 5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\ntwo\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\ntwo\n(3, 4, 5)\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} +``` + +By now you should be getting pretty good at reading these objects :) + +Let's just focus on the `stdout` field at each execution point. Note that its contents start as an empty string +at the beginning of execution and then grow incrementally as more stuff is printed to stdout at each +subsequent execution point. If we grep for `stdout` in the trace, we see the following progression: + +```javascript + "stdout": "", + "stdout": "1\n", + "stdout": "1\ntwo\n", + "stdout": "1\ntwo\n(3, 4, 5)\n", +``` + +This isn't rocket science; but just be aware that `stdout` contains the cumulative contents of the stdout +buffer up to that execution point, not only what's been printed by the most recently executed line. + + +## Function Stack Frames + +So far our example programs contained no function calls. Let's now kick it up a notch and see an example +with function calls: + +```python +def foo(x, y, z): + return bar(x, y) + +def bar(a, b): + return baz(a) + +def baz(c): + return c + +result = foo(1, 2, 3) +``` + +Let's jump straight to Step 8 of 10, +when the program is about to return from the call to `baz`. + +Study the visualization for a bit. Note that there are four frames currently on the stack: globals, `foo`, `bar`, and `baz`. +Each frame consists of a name and a mapping between constituent variable names and values. There is a special +variable called `Return value` (stored in the trace as `__return__`), +which represents the value that `baz` is about to return to its caller. + +Let's now look at the execution point object corresponding to this visualization: + +```javascript + { + "ordered_globals": [ + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "b" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "c": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "c", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ], + "baz": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "bar(a, b)", + null + ], + "3": [ + "FUNCTION", + "baz(c)", + null + ] + }, + "line": 8, + "event": "return" + }, +``` + +First things first: This is a `return` event occurring on line 8 (the `return c` line in `baz`). The currently-active +function is `baz`. There are three global variables: `foo`, `bar`, and `baz`, which all point to function objects +on the heap. + +The only new kind of field is `stack_to_render`, which is (unsurprisingly) a list of stack frames to render. +In this case, `stack_to_render` contains three elements -- the frames for `foo`, `bar`, and `baz`, in that exact order. +The frontend simply walks down `stack_to_render` and renders each frame in a similar way that it renders global variables. + +Let's now zoom in on one particular frame in `stack_to_render`. Here is the frame for `bar`: + +```javascript + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "b" + ] + }, +``` + +For starters, `func_name` is the name of the function, and `is_highlighted` is true only if the current +frame is the "top-most" one (telling the frontend to highlight it in a brighter color). + +`encoded_locals` is a mapping from local variable names to their values, similar to how `globals` +provides a mapping from global variable names to their values. + +`ordered_varnames` is an ordered list of keys from `encoded_locals`, usually sorted by order of appearance +during execution. The global analogue for this field is `ordered_globals`. (I suppose this field should be named +`ordered_locals`, but I haven't gotten around to renaming yet.) + +`frame_id` is an integer that *uniquely* identifies this frame; the first function call (of *any* function) gets +a frame ID of 1, and then subsequent calls get successively increasing frame IDs. + +`unique_hash` is a unique string that identifies this frame. For now, a simple way +to construct `unique_hash` is by concatenating the frame's function name with `frame_id`. +Note that `unique_hash` seems redundant with `frame_id`, since the latter is already unique. +However, you'll see in the "Closures and Zombie Frames" section why `unique_hash` is required. + +Finally, ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We'll cover those in the more advanced +"Closures and Zombie Frames" section below. + + +## Closures and Zombie Frames (advanced) + +(TODO: WRITE ME!) + +(TODO: talk about needing to append `_p` and `_z` onto `unique_hash` when a frame becomes a parent or zombie, +respectively, since the frontend needs to know when to refresh the display.) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md new file mode 100644 index 000000000..d1490a2ad --- /dev/null +++ b/v3/docs/project-ideas.md @@ -0,0 +1,460 @@ +# Project Ideas + +This (messy!) document provides an overview of some project ideas for extending +Online Python Tutor (thereafter abbreviated as OPT). View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/project-ideas.md + +Email philip@pgbovine.net if you're interested in working on anything here, or if you have other +project ideas. + + +## Stylistic + +### Beautiful print-outs of OPT visualizations + +A lot of instructors want to print out their OPT visualizations to make handouts or lecture notes +for students. +However, the default CSS is optimized for on-screen viewing and not for printing, +so when you try to print the diagrams, they look ugly and unreadable. + +The project involves creating a custom CSS optimized for printing, especially on black-and-white printers. +Here is an example how-to guide to get started creating a CSS print style sheet ... +http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ + +Another idea is to get OPT to output SVG, PDF, or another +printer-friendly format. + + +### Responsive web design for OPT UI + +This is a good project for someone interested in visual and web design. + +Implement the principles of [responsive web design](http://en.wikipedia.org/wiki/Responsive_Web_Design) +so that OPT visualizations (and the surrounding user interface) look good on displays of many different sizes +ranging from smartphones to tablets to laptops to giant desktop monitors. + + +## Frontend + +### IPython Notebook integration + +It would be awesome to integrate OPT with the [IPython Notebook](http://ipython.org/notebook.html) so that visualizations +can be displayed inline within a notebook using, say, a `%visualize` magic keyword. + +In late 2012, I started messing around with a prototype but didn't get too far. + + +### Rich user input widgets + +Right now Online Python Tutor takes only code as input. However, it would be great to create widgets that allow +the user to input data into their code. That way, they can visualize the same code executing on different data +without changing the code. Currently, the only way to do this is to +"hard-code" the input data as global constants, which is cumbersome. + +Here are some examples of input widgets: + +- Text input widget to simulate stdin. This could be used with raw_input()/input() + +- Interactive widget to draw mathematical graphs (e.g., nodes and edges); useful for visualizing graph/tree manipulation algorithms +- A 2-D canvas where the user can draw points and lines in a coordinate system; useful for visualizing simple computational geometry algorithms +- A 2-D matrix of numbers or colored blocks for, say, a PacMan world +- Drag and drop an image; useful for visualizing image manipulation algorithms +- A text box that represents a file on the filesystem. Imagine a web-based I/O simulator where there would be a text box simulating a file object, and then I/O calls such as open, readline, etc. would be intercepted and visualized as iterating (pointing) to the file object one line at a time, reading each line into a string, etc. Writing into a file can also be visualized in this way too. And seeking, overwriting, appending, etc. + + +### Custom data structure visualizations + +Right now Online Python Tutor can render only basic Python data structures. + +While this is sufficient for teaching introductory CS courses, intermediate and advanced CS students must learn +algorithms involving more sophisticated data structures such as binary trees and graphs. +The goal of this project is to create a set of effective custom renderers for data structures +such as: + +- trees +- graphs +- numerical matrices +- simple 2D graphical worlds (e.g., for Pac-Man or Conway’s Game of Life) +- rendering lists of numbers as bar/line graphs, charts, and other quantitative data visualizations (e.g., using Google Charts API) +- file objects +- DSL components such as logic gates for a logic simulator written in Python, or proof trees for formal logic courses +- compiler data structures such as parser states, parse tables, AST construction, code generators, etc. +- relational algebra diagrams for database courses +- embedded image files (e.g., inline PNG images) to visualize Guzdial et al.'s [Media Computation](http://coweb.cc.gatech.edu/mediaComp-teach) algorithms online + +These renderers will make Online Python Tutor useful in a far larger variety of CS courses and online textbooks +beyond CS0/CS1 sorts of intro classes. + +One ultimate goal is to make OPT capable of visualizing classic AI, algorithm, and compiler textbook algorithms +that otherwise would need to be tediously built as one-off special-case visualizations. + +From an email excerpt in May 2013: { +I recently added a feature to Online Python Tutor (OPT) that enables user programs to output HTML/CSS/JS, in addition to printing to stdout. Thus, if a program calls html_output(" ... "), when OPT steps over that line, it will render the HTML string in a div. This makes it possible to generate a wide array of visualizations in pure Python (by simply constructing strings that represent legal HTML/CSS/JS). + +For the file I/O example, I can imagine creating a special File class that implements "file-like" stream I/O methods. Then the user program might look like: + + import VisualFile + f = VisualFile() + for line in open(f): + + + +The class definition of VisualFile includes the proper HTML-generation code to render a pretty HTML representation of the file's contents. And when methods iterate over the file, it can render an HTML representation with certain lines or characters highlighted to represent, say, the current file pointer position, etc. +} + + +There are (at least) two main ways to implement this feature: + +- Add custom data types to the trace and have the frontend render them + specially using JS visualization libraries such as d3. + +- Take advantage of OPT's (still-undocumented) ability to print + arbitrary HTML/CSS/JS to the canvas (just like how it can print stdout + output to a text box). This enables us to create custom data structure classes + with printHTML() methods that print their graphical representation to + the web page canvas. The dream here is to be able to write pure-Python modules for + each custom data type, which can "pretty-print" as HTML/CSS/JS. + +### Holistic tabular view + +Right now OPT displays one state at a time. For simple algorithms, students often find it helpful +to have the entire state displayed in a table, and will manually insert in `print` statements like so: + + i = 0 + numbers = [] + while i < 6: + print 'At the top i is %d' % i + numbers.append(i) + i = i + 1 + print 'Numbers now: ', numbers + print 'At the bottom i is %d' % i + + +Question: Can we augment OPT to automatically display this sort of "cumulative tabular view"? +All of the data is right there in the trace; it's just a matter of visualizing it sensibly. + +For instance (this output is faked, so it's not accurate): + + i numbers code executed + ------------------------------------------- + 0 [0] while i < 6: + 1 [0, 1] i = i + 1 + 2 [0, 1, 2] while i < 6: + 3 [0, 1, 2, 3] i = i + 1 + 4 [0, 1, 2, 3, 4] + +In this case, the execution step slider under the code now highlights rows in the table as the +user scrubs through the slider; cool! + +The obvious challenge here is scalabiilty, and what happens when there are multiple frames. + +Some ideas include: +- having the user manually annotate (in, say, a docstring) which variables to print in the table +- only printing the table for one frame at a time +- or maybe displaying nesting frames + +2014-04-18: brainstorming on whiteboard + +![tabular view](opt-tabular-view.jpg) + +One interesting visual element is to bold or color values when they change, to draw the viewer's eye +to changes. In this way, it turns the OPT trace into more of a data visualization to focus on how data +changes over time. + + +### Custom rendering API and plugin system + +Right now Online Python Tutor renders Python data structures in a single, fixed way. +However, different instructors have different preferences for how they want certain objects to render +on-screen (and argue passionately for their specific tastes). +There is currently no way for them to specify these custom rendering schemes without mucking around with +intricate JavaScript code in the frontend. + +The goal of this project is to create a clean API and plugin architecture so that JavaScript-savvy instructors +can easily create custom renderers. + +The ultimate goal here is to completely replace one-off custom algorithm visualizations, whiteboard doodles, +and ad-hoc PowerPoint slide deck animations of CS concepts. + + +### Annotations for simplifying visualizations + +Right now OPT visualizes "everything" about program execution. However, that can easily lead to visual overload. +Let's think about implementing annotations to selectively show/hide different parts of execution, so that instructors +and students can hone in on what they find interesting. Examples: + +- annotate functions to trace/skip +- annotate data structures (or parts) to show/hide +- selectively expand or collapse data structure visualizations, which is useful for giant structures +- line-based breakpoints (currently implemented as a hack by puttin `# break` at the end of a line) +- conditional breakpoints + +Implementing annotations as ordinary code comments (rather than using a specialized UI) is elegant +because the instructor's code examples are self-contained in plain text and easily archivable outside of OPT. + +As a concrete use case, think about how to "clean up" the display of object-oriented programs. +Right now OPT naively visualizes all the steps that the Python interpreter takes when executing an +object-oriented program, which leads to all sorts of extraneous variables, frames, and pointers +lying around. + +Click here for an example. + +Think about how annotations can "clean up" such a big and hairy visualization. + + +### Semantic zooming and other visual customizations + +Right now OPT has only a limited number of ways to display visualizations, mostly set at the time +the "Visualize Execution" button is pressed. + +First, push some of the relevant options back to the visualizer UI itself, so they can be toggled +on a live visualization. + +Next, think about "semantic zooming" -- i.e., displaying different levels of granularity and focus +targeted toward different user audiences. For instance, fully expanding all the data structures +up-front might overwhelm beginners, so maybe start with them collapsed and then allow the user +to zoom in to expand them. Or maybe even "zooming out" to the point where data structures are +just rendered as plain-text (e.g., a list as `[1, 2, ..., 100]`, to take the focus off the heap details). + +Semantic zooming will help improve the "visual scalability" of the visualizations. + + +### Web-based authoring environment + +With a proper Web-based authoring environment, teachers and students can use +Online Python Tutor visualizations as the basis for annotated examples, +programming exercises, and quizzes. + +As a start, I've implemented a prototype of "annotation bubbles" for fine-grained annotation of visualization elements: + +![annotation bubbles](../opt-annotations.png) + +[Try a mock-up here!](http://pythontutor.com/commentary-bubbles-demo.html) + + +**Annotated code visualizations**: + +- Teachers could use it as a place to put their code examples and mini-lessons (so that they’re persistent, rather than sending out a bunch of gross URLs) + - Lesson text can be fine-grained -- e.g., specific text to accompany each execution point, or annotations atop individual objects. + - see the above screenshot for "annotation bubbles" prototype to label individual visualization elements + - Think about what asides or remarks would a teacher/mentor SAY OUT LOUD when stepping through code with a student/mentee. Those are probably the kinds of commentary that you'd want to put inside of visualizations. +- Students could use it as a Stackoverflow-like forum for asking questions + - Potentially powerful use case in MOOCs where students can directly annotate visualizations while debugging and then fire off a question to a discussion forum (with all required context). Again, OPT will be embedded within a larger MOOC courseware environment and be a segue into discussion forums. + - With a lightweight authoring environment, OPT can be used for embedding read-write visualizations. When a student is viewing code visualizations embedded within a textbook or lesson, they can mark annotations for parts they don’t understand and then send off the link to the course staff or discussion forum. So in essence, they’re interacting with the visualization rather than just passively consuming it. + + +**Exercises/quizzes**: Since we have rich visualizations and interactivity at our disposal, +we can come up with new forms of exercises that are more engaging than simply +"write a function that does X and then passes these 10 unit tests." +For example, one could imagine putting in blank slots as the user steps through the visualization, +and the user would need to fill in those slots with the appropriate values. (There is already a +not-yet-documented prototype of these sorts of pop-up questions, done by Brad Miller.) + + +### Visualizing orders of growth + +Think about how to convey orders of growth of algorithms across data sets of varying sizes. + +Notes from Peter N.: { +Peter suggested augmenting special data structure classes with callback hooks to the visualizer (like __str__ on steroids). This allows the visualizer to gracefully skip steps of the yucky internals of a data structure while just stepping through the significant parts. You can imagine instrumenting an Array class and visualizing compares, swaps, etc. for sorting algorithms. + +"Third, it would also be great to have a plot API, to plot the runtimes (or some other stat) as a function of input size N." + +"Fourth, while I have seen other algorithm systems where they annotate the code (by putting in annotations that say @step or something), I think we can get away without it. For example, if the problem is sorting a list of integers, don't annotate the algorithm: just pass it an input that consists not of a list of ints, but rather an annotaed list of annotated ints. An annotated lists increments a counter for every __getitem__ and __setitem__, and an annotated int increments a counter for every __lt__ and the like. It won't survive malicious attacks, but it will work for all but the actively uncooperative users." + +We also talked about visualizing orders of growth of code, such as loops, nested loops, etc. by visualizing how many times things execute and then how that changes as your input size changes. +} + + +## Backend + +### Shared visualization sessions + +My main high-level vision for where to take the shared editing is the following: + +1. The instructor tells students to join a shared session. +2. The instructor starts "driving" and typing code in the shared session. students watch along. +3. At any time, a student can click a "detach" button and detach his/her session from the teacher. Then the session acts just like regular Online Python Tutor. +4. At any time, a student can "reattach" to the shared session and follow the instructor again. + +The basic idea here is that students can follow along with an instructor but then "detach" at anytime to try out their own variations and experiments without interfering with other people's sessions. + +A related point/question is: what happens if two people try to simultaneously edit? i assume that they clobber each other's changes, right? in that case, it might be good to designate only ONE person who can edit, and everyone else just watches. or else a mischievous student can just delete everyone's code. of course, you can also have another "free-for-all" mode where everyone can edit. + + +Another take on this idea: +Adding real-time concurrent editing to these visualizations enables students to work together and tutor +one another while physically separated. A shared workspace can also be useful during both physical and +virtual lectures: As the instructor is lecturing using code visualizations, students can follow along by +viewing those same running examples on their laptops. At any point when curious or confused, students can +instantly diverge from the live example and try out their own variants +on-the-fly in private; they can then sync back to the "live feed" at any time. Students can also text +chat with one another about the lecture, all within the context of the live lecture materials. If students +opt-in to allowing the instructor to access such interaction data, then that could "close the loop" and +help the instructor improve future lectures. For instance, if 80% of students are silently diverging from +the live example at a certain point in lecture, then perhaps that part requires further clarification. + +**Update in Sept 2013**: I've created a first prototype integrating the [IPython shell with OPT](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/opt-ipy.py). + +Watch this [YouTube video demo](http://www.youtube.com/watch?v=y3sVN7uaxDM) for an example of shared sessions. + + +### Visualizing different programming languages (especially JavaScript!) + +This project is great for someone who likes to hack on language implementations and runtimes. + +The OPT frontend can visualize programs written in any mainstream language, not just Python. +This project involves creating a backend for another language (e.g., Ruby, Java, JavaScript, C, C++, Scheme). +All the backend needs to do is to generate an execution trace in the following format: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + +And the OPT frontend should be able to visualize it! + +In particular, I think a **JavaScript backend** would be amazing. +By hacking the [narcissus](https://github.com/mozilla/narcissus) meta-circular JavaScript interpreter, +you should be able to implement a JavaScript visualizer purely in the browser. You get the benefits of +low latency, offline access, and no security concerns that plague traditional server-side apps. How cool is that?!? + +Check out backends that other people have already written: + +- [Online JavaScript Tutor](http://jstutor.herokuapp.com/) by Hung Doan +- [Online Java Tutor](http://cscircles.cemc.uwaterloo.ca/java_visualize/) by David Pritchard +- [Online Ruby Tutor](http://www.onlinerubytutor.com/) by Daniel Stutzman +- [Blockly + OPT](http://epleweb.appspot.com/) by Pier Giuliano Nioi + +Other misc. implementation notes: + +- The [Chicory Java trace generator for Daikon](http://groups.csail.mit.edu/pag/daikon/download/doc/daikon_manual_html/daikon_7.html#SEC69) +might be a good basis for writing a Java backend for OPT. Or take a look at [jdb](http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/jdb.html), which +should be similar to how Online Python Tutor uses Python's pdb module to generate traces. + +- My [master's thesis](http://pgbovine.net/projects/pubs/guo-mixedlevel-mengthesis.pdf) from 2006 +describes one possible technique for building a C-language backend based upon the [Valgrind](http://www.valgrind.org) +tool. More importantly, it describes the difficulties involved in creating a robust execution +trace generator for C and C++. +It should be much easier to build a backend for a memory- and type-safe language, though :) + + +### Skulpt (Python-in-JavaScript) backend + +This project is appropriate for someone with advanced knowledge of hacking a Python interpreter +who is willing to make a substantive time commitment. + +Right now the OPT backend runs Python code on the server, but it would be super-cool to create a "backend" +that runs entirely in the browser. Modifying Skulpt -- http://www.skulpt.org/ -- is the leading contender here, +since I am in touch with its main developers. + +The basic idea is to use Skulpt to generate a JavaScript trace object (all within the web browser without +a server call) and then construct a new ExecutionVisualizer with that trace object as a parameter. +Read "Direct embedding" and the associated code for more detailed info: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md#direct-embedding + + +Main Advantages: + - Enables fine-grained tracing of expression and sub-expression evaluation, which has clear pedagogical benefits; right now OPT can only single-step over one line at a time since it relies on the Python bdb debugger. + - Enables an interactive REPL that incrementally takes in user inputs rather than just executing batch programs; this can lead to better interactivity and responsiveness. + - Supports on-demand evaluation and in-memory storage of (relatively) large data structures such as a 100,000-element dictionary for a spell checker program; right now OPT must send that giant dictionary in a trace (encoded in an inefficient format). + - Works in "offline mode" for students in regions without reliable Internet access + - Enables on-the-fly editing of data by clicking on and editing the visualized objects (since they're just JavaScript objects) ... Smalltalk style :) + - Might enable [Bret-Victor-esque](http://vimeo.com/36579366) "live coding" where the display updates nearly instantaneously as you are coding + +From an OPT user: +"The second idea came about when teaching about return values, but it applies to any "compound" expression that is more than a single function call or assignment of a literal to a variable. I often find myself showing how Python processes a statement like "x = len(s) + 1" by showing how individual pieces are computed sequentially. Right now, OPT treats that as a single, atomic line, so students don't see clearly how it first calls len(s), "replaces" that with its return value, performs the addition, and then stores the result of that into x. I draw things like this on the board with underlining and arrows (e.g., "len(s)" is underlined, with an arrow pointing down to its return value) to show where data goes and how everything is evaluated. I expect that could be automated and displayed in something like OPT. I'm not sure I'm being clear, but I hope that makes some sense. I recognize that this doesn't fit that well into the current model, which is focused on one step being one line of code, so it may be a bit of a pipe-dream." + +Tips & Tricks: + - From Brad Miller: http://blog.bonelakesoftware.com/2011/03/adding-module-to-skulpt.html and http://blog.bonelakesoftware.com/2011/02/python-in-your-browser-in-javascript.html + - From Scott Graham, when I asked him whether Skulpt implements Python 2 or 3: “Mostly 2-ish. Some object hierarchy things take after 3's simplified semantics.” + +Dec 2012: Brython -- http://www.brython.info/index_en.html -- might also be a contender here, since it supports lots of Python 3 (except for OOP, lambdas, exceptions, and generators, afaik). + +May 2013: In the experience of Python veterans, the main caveat with targeting one of these alternative Python implementations is that they don't support the full ("official") Python language. +Thus, users might be frustrated that code they type into this tutor doesn't run exactly like code they type into the official Python interpreter. +That said, though, a Skulpt implementation would still be useful, as long as users understand its limitations and caveats, and that it doesn't support the full Python language in all of its glory (or its weird edge-case behaviors). + +Nov 2013: Currently, the only way to get the official CPython in JS is to use https://github.com/replit/empythoned, +which is used by the more general https://github.com/replit/jsrepl and https://github.com/replit/repl.it projects. +However, handling `stdin` is really kludgy and works well only on Chrome/Safari ... kinda works in Firefox, and not at all in IE: https://github.com/replit/jsrepl#standard-input-hacks +And it's unclear how to get the CPython code to communicate with the custom JS viz code ... so this is still not a shoo-in yet :/ The technology is still not there, ugh! + + + +### Hack CPython to enable sub-expression-level tracing + +Right now OPT uses [bdb](http://docs.python.org/2/library/bdb.html) to trace at line-level granularity. +However, lots of users want sub-expression-level granularity, such as this user: + +"The second idea came about when teaching about return values, but it applies to any "compound" expression that is more than a single function call or assignment of a literal to a variable. I often find myself showing how Python processes a statement like "x = len(s) + 1" by showing how individual pieces are computed sequentially. Right now, OPT treats that as a single, atomic line, so students don't see clearly how it first calls len(s), "replaces" that with its return value, performs the addition, and then stores the result of that into x. I draw things like this on the board with underlining and arrows (e.g., "len(s)" is underlined, with an arrow pointing down to its return value) to show where data goes and how everything is evaluated. I expect that could be automated and displayed in something like OPT. I'm not sure I'm being clear, but I hope that makes some sense. I recognize that this doesn't fit that well into the current model, which is focused on one step being one line of code, so it may be a bit of a pipe-dream." + +One way to get finer-grained tracing is to use Skulpt (see above), but the problem with Skulpt is that it's not +"real" Python (i.e., CPython), so that code typed into OPT won't run exactly the same as code run by CPython. + +The goal of this project is to hack CPython all the way from the compiler frontend to the bytecode generator +and debugger hooks to add **fine-grained** information into the bytecode to enable sub-expression-level tracing. +I envision the result as being a custom CPython interpreter that I can compile and run on the OPT server, which +will run real CPython code, albeit with bytecode that's enhanced with extra metadata. The resulting interpreter +should be compatible with pure-Python modules, and hopefully compatible with C modules as well, as long as `PyObject` +and other internal guts aren't altered too much. But I don't care a ton about C module compatibility since OPT +doesn't really use C modules. (Update in July 2013 -- it seems like hacks to CPython core data structures are +intrusive enough to preclude C module object compatibility. But that's not a big deal.) + + +#### Early Prototype (July 2013) + +In early July 2013, I made some initial steps toward this goal as a proof-of-concept and am +encouraged by my findings so far. + +[**Try the prototype now**](http://pythontutor.com/visualize.html#py=2crazy) by selecting +"2.crazy" as the Python version. + +Specifically, try the prototype on a simple example. + +And see the underlying [Py2crazy](https://github.com/pgbovine/Py2crazy/) project for more details. + +Note that the (approximate) tokens corresponding to the +currently-executing bytecode instruction is highlighed are yellow. + +In short, I think that with enough elbow grease to hack on CPython innards, +you can get pretty good line/column number information into bytecodes; +then Online Python Tutor can do much finer-grained stepping within expressions. + +Line-level stepping is too coarse, and bytecode-level might be too fine-grained; +so I imagine that with some good filtering heuristics, we can hit a sweet spot of +stepping at a level that instructors like. In particular, lots of bytecodes are executed for +loading constants when initializing, say, a list; those can probably be skipped since +they're un-interesting. + + +### Offline mode for use as a production debugger + +From a reader comment: "As a teaching tool it is invaluable, not only for teaching python, but for programming in general (what is going on in memory...). +I've actively used it to debug / trace short pieces of code. Any chance of having it offline (and without the limitations of an online tool like the inability to load all modules)? That would make a perfect pdb visualization tool." + +You could imagine running a webserver on localhost and using OPT as a graphical frontend for pdb; interesting idea! + +Notes from an email I sent on 2012-10-24: { + +One possible offline application is to use OPT as a visual debugger for pdb (http://docs.python.org/library/pdb.html). The use case here would be: + +1.) The user launches a special version of pdb augmented with OPT. +2.) The user types in some Python command to visualize. +3.) pdb starts a local webserver and pops up a web browser window. +4.) The visualization appears in the web browser window, and the user can interact with it. + +Actually, now that I think about it, you can start even simpler without pdb. Here is an even simpler starting point: + +1.) The user writes some code to visualize in a file on his/her computer. +2.) The user runs a special Python script that runs OPT on that file, launches a local webserver, and pops open a web browser window. +3.) The visualization appears in the web browser window. + +Ok, that seems simpler as a starting point, and it will still teach you about local webservers and interfacing between the OPT backend and frontend. + +Then comes the question of why this offline mode might be useful (beyond being a good learning exercise). After all, just by following the directions in the developer overview docs, you've essentially set up OPT to run offline without an Internet connection. So my plan above doesn't give you any extra functionality. However, I think the potential lies in integrating with a real debugger such as pdb, so that you can run large Python programs, pause execution, and then visualize selected data structures (rather than all data structures in the program, which can get overwhelming). + +Ok sorry that was mostly me thinking out loud. + +} + +Ha, I guess you can call this **"Offline Python Tutor"**! + diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md new file mode 100644 index 000000000..03b401896 --- /dev/null +++ b/v3/docs/user-FAQ.md @@ -0,0 +1,42 @@ +# Frequently Asked Questions from users of Online Python Tutor + +Email philip@pgbovine.net if you have a question that isn't addressed here. + + +#### I thought all objects in Python are (conceptually) on the heap; why does Online Python Tutor render primitive values (e.g., numbers, strings) inside of stack frames? + +This was a design decision made to keep the display less cluttered; +if we were truly faithful to Python's semantics, that would result in far too many arrows (pointers) being drawn. +However, note that since primitives are **immutable** and thus behave identically regardless of aliasing, +it doesn't matter whether they're rendered in the stack or heap. + +Update on 2013-01-06: I've just added a drop-down menu option with two choices: +"inline primitives and nested objects" versus "render all objects on the heap". +If you want to render all objects on the heap, select the latter option. +To avoid too many arrows being drawn, also toggle the "draw references using arrows" option +to "use text labels for references". + + +#### I don't like your default toggle options. Can I set different defaults? + +Of course! Toggle options are customizable via the query string. Here are the default settings: + +http://pythontutor.com/visualize.html#cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=2 + +For example, if you want to default to Python 3, visit: +http://pythontutor.com/visualize.html#&py=3 + +Or if you want to render all objects on the heap and use text label references, visit: +http://pythontutor.com/visualize.html#heapPrimitives=true&textReferences=true + +The possibilities are endless! (or 2^6 or something.) + + +#### Unicode strings look weird or broken + +Yep, that's a known bug; Online Python Tutor currently doesn't have great Unicode support. + + +#### Did you know that stepping through code with generators looks weird when "display frames of exited functions" is selected? + +Yep, this is a known bug, but sadly the fix isn't straightforward at the moment. diff --git a/v3/embedding-demo.html b/v3/embedding-demo.html new file mode 100644 index 000000000..43ad41147 --- /dev/null +++ b/v3/embedding-demo.html @@ -0,0 +1,68 @@ + + + + + Online Python Tutor embedding demo + + + + + + + + + + + + + + + + + + + + + + + + + +

      Recursive list sum (from pythontutor.com home page):

      + +
      + + +

      Towers of Hanoi:

      + +
      + + +

      Happy Birthday:

      + +
      + + + +

      This one tests your knowledge:

      +
      + +
      +

      Check your understanding

      + Enter the value of the variable a after the current line is executed. + + + +

      +
      +
      + +
      + + + + diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js new file mode 100644 index 000000000..0fd466232 --- /dev/null +++ b/v3/embedding-demo.js @@ -0,0 +1,200 @@ +// To embed Online Python Tutor visualizations into embedding-demo.html ... + +// 1. Run generate_json_trace.py to generate execution traces as JavaScript variables. +// (WARNING: The following lines are VERY LONG.) + +// Run: +// python generate_json_trace.py --create_jsvar=listSumTrace tests/backend-tests/list_sum.txt +// and copy-and-paste the output line into here: +var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + +// Do the same for +// python generate_json_trace.py --create_jsvar=hanoiTrace tests/example-code/towers_of_hanoi.txt +var hanoiTrace = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_jhash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; + +// And finally, let's generate one last trace and copy it in here: +// python generate_json_trace.py --create_jsvar=happyTrace tests/example-code/happy.txt +var happyTrace = {"code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["happy"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 5, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": null, "P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P", "__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 9, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "", "stack_to_render": [], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 12, "event": "return"}]}; + +var bradstrace = { + "code": "a = 0\nb = 0\na = a + 1\nb = a\nprint b\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": 0, + "b": 0 + }, + "heap": {}, + "line": 3, + "question": {"text":"what is the value of a after this line?", + "correct":"globals.a", + "div":"bradsDiv_modal", + "feedback":"First look at the current value of a. How much are we adding to that?" + }, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": 1, + "b": 0 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": 1, + "b": 1 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": 1, + "b": 1 + }, + "heap": {}, + "line": 5, + "event": "return" + } + ] +}; + + + +// 2. When the HTML document finishes loading, populate the three divs +// (listSumDiv, hanoiDiv, happyDiv) with the visualizations +// corresponding to the respective traces. +$(document).ready(function() { + + // 3. Create a new ExecutionVisualizer object for each visualization. + // (See js/pytutor.js for the full specs of ExecutionVisualizer.) + // + // The basic idea is that the parent div name is passed as the first argument, + // and the trace object is passed as the second argument. + // + // The third argument contains optional parameters. + + // Note that "embeddedMode: true" makes the visualizer appear more compact on-screen. + // editCodeBaseURL is the base URL to prepend onto the 'Edit code' link. + + + // A more subtle point is that when some div in your HTML webpage + // (such as a visualizer div) expands in height, it will "push down" + // all divs below it, but the SVG arrows rendered by jsPlumb + // WILL NOT MOVE. Thus, they will be in the incorrect location + // unless you call redrawAllConnectors(). + // + // We use the "heightChangeCallback" optional parameter to force redraw + // of all SVG arrows of ALL visualizers, whenever the height of one changes. + // + // Alternatively, here is one jQuery plugin that you can use to detect div height changes: + // http://benalman.com/projects/jquery-resize-plugin/ + // + // A related trick you can implement is to make a div never shrink in height once it's grown; + // that way, you can avoid lots of jarring jumps and (inefficient) redraws. + + var bradsVisualizer = new ExecutionVisualizer('bradsDiv', bradstrace, + {embeddedMode: true, + heightChangeCallback: redrawAllVisualizerArrows, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + // Render listSumTrace inside of listSumDiv + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: true, + heightChangeCallback: redrawAllVisualizerArrows, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + // The "startingInstruction: 15" optional parameter means to jump to step 15 + // in the visualization when it loads. (The HTML webpage will actually display + // "Step 16 of 64" since indices are zero-indexed.) + // + // verticalStack means to stack the code and visualizations vertically atop one another + // (rather than side-by-side) + var hanoiVisualizer = new ExecutionVisualizer('hanoiDiv', hanoiTrace, + {embeddedMode: true, + startingInstruction: 15, + verticalStack: true, + heightChangeCallback: redrawAllVisualizerArrows, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + // "embeddedMode: false" displays the full visualizer widget with the "Program Output" pane + // "jumpToEnd: true" means to jump to the end of execution upon loading. + var happyVisualizer = new ExecutionVisualizer('happyDiv', happyTrace, + {embeddedMode: false, + jumpToEnd: true, + codeDivWidth: 450, + codeDivHeight: 150, + // no need for heightChangeCallback since + // this is the "bottom-most" visualizer, + // so no arrows appear below it + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + function redrawAllVisualizerArrows() { + if (listSumVisualizer) listSumVisualizer.redrawConnectors(); + if (hanoiVisualizer) hanoiVisualizer.redrawConnectors(); + if (happyVisualizer) happyVisualizer.redrawConnectors(); + } + + + // Call redrawConnectors() on all visualizers whenever the window is resized, + // since HTML elements might have moved during a resize. The SVG arrows rendered + // by jsPlumb don't automatically get re-drawn in their new positions unless + // redrawConnectors() is called. + $(window).resize(redrawAllVisualizerArrows); +}); diff --git a/v3/example-code/aliasing.golden b/v3/example-code/aliasing.golden new file mode 100644 index 000000000..d0f3f9997 --- /dev/null +++ b/v3/example-code/aliasing.golden @@ -0,0 +1,2067 @@ +{ + "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print(myLst)\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 2 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ], + "bar": [ + "REF", + 6 + ], + "foo": [ + "REF", + 5 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing.golden_py3 b/v3/example-code/aliasing.golden_py3 new file mode 100644 index 000000000..f56be9792 --- /dev/null +++ b/v3/example-code/aliasing.golden_py3 @@ -0,0 +1,2067 @@ +{ + "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print(myLst)\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 2 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ], + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/aliasing.txt b/v3/example-code/aliasing.txt similarity index 54% rename from example-code/aliasing.txt rename to v3/example-code/aliasing.txt index e866323d5..459b370db 100644 --- a/example-code/aliasing.txt +++ b/v3/example-code/aliasing.txt @@ -1,19 +1,25 @@ -# Example of aliasing x = [1, 2, 3] +y = [4, 5, 6] +z = y +y = x +x = z + +x = [1, 2, 3] # a different [1, 2, 3] list! y = x x.append(4) y.append(5) -z = [1, 2, 3, 4, 5] +z = [1, 2, 3, 4, 5] # a different list! x.append(6) y.append(7) y = "hello" + def foo(lst): lst.append("hello") bar(lst) def bar(myLst): - print myLst + print(myLst) foo(x) foo(z) diff --git a/v3/example-code/aliasing/aliasing1.golden b/v3/example-code/aliasing/aliasing1.golden new file mode 100644 index 000000000..00383dd48 --- /dev/null +++ b/v3/example-code/aliasing/aliasing1.golden @@ -0,0 +1,98 @@ +{ + "code": "a = (1, (2, (3, None)))\nb = a[1]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing1.golden_py3 b/v3/example-code/aliasing/aliasing1.golden_py3 new file mode 100644 index 000000000..00383dd48 --- /dev/null +++ b/v3/example-code/aliasing/aliasing1.golden_py3 @@ -0,0 +1,98 @@ +{ + "code": "a = (1, (2, (3, None)))\nb = a[1]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing1.txt b/v3/example-code/aliasing/aliasing1.txt new file mode 100644 index 000000000..f6d9efea8 --- /dev/null +++ b/v3/example-code/aliasing/aliasing1.txt @@ -0,0 +1,2 @@ +a = (1, (2, (3, None))) +b = a[1] diff --git a/v3/example-code/aliasing/aliasing2.golden b/v3/example-code/aliasing/aliasing2.golden new file mode 100644 index 000000000..ab6c203f4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing2.golden @@ -0,0 +1,90 @@ +{ + "code": "c = (1, (2, None))\nd = (1, c)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing2.golden_py3 b/v3/example-code/aliasing/aliasing2.golden_py3 new file mode 100644 index 000000000..ab6c203f4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing2.golden_py3 @@ -0,0 +1,90 @@ +{ + "code": "c = (1, (2, None))\nd = (1, c)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing2.txt b/v3/example-code/aliasing/aliasing2.txt new file mode 100644 index 000000000..57984f2ff --- /dev/null +++ b/v3/example-code/aliasing/aliasing2.txt @@ -0,0 +1,2 @@ +c = (1, (2, None)) +d = (1, c) diff --git a/v3/example-code/aliasing/aliasing3.golden b/v3/example-code/aliasing/aliasing3.golden new file mode 100644 index 000000000..a0bded930 --- /dev/null +++ b/v3/example-code/aliasing/aliasing3.golden @@ -0,0 +1,335 @@ +{ + "code": "l1, l2, l3, l4 = 1, 2, 3, 4\n\nt1 = (l1, l2)\nt2 = (l3, l4)\nt = (t1, t2)\nu = ((1, 2), (3, 4))\nv = u[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "t1": [ + "REF", + 1 + ], + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u", + "v" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "v": [ + "REF", + 5 + ], + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing3.golden_py3 b/v3/example-code/aliasing/aliasing3.golden_py3 new file mode 100644 index 000000000..a0bded930 --- /dev/null +++ b/v3/example-code/aliasing/aliasing3.golden_py3 @@ -0,0 +1,335 @@ +{ + "code": "l1, l2, l3, l4 = 1, 2, 3, 4\n\nt1 = (l1, l2)\nt2 = (l3, l4)\nt = (t1, t2)\nu = ((1, 2), (3, 4))\nv = u[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "t1": [ + "REF", + 1 + ], + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u", + "v" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "v": [ + "REF", + 5 + ], + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing3.txt b/v3/example-code/aliasing/aliasing3.txt new file mode 100644 index 000000000..fcb9e9c63 --- /dev/null +++ b/v3/example-code/aliasing/aliasing3.txt @@ -0,0 +1,7 @@ +l1, l2, l3, l4 = 1, 2, 3, 4 + +t1 = (l1, l2) +t2 = (l3, l4) +t = (t1, t2) +u = ((1, 2), (3, 4)) +v = u[0] diff --git a/v3/example-code/aliasing/aliasing4.golden b/v3/example-code/aliasing/aliasing4.golden new file mode 100644 index 000000000..0d440f81a --- /dev/null +++ b/v3/example-code/aliasing/aliasing4.golden @@ -0,0 +1,67 @@ +{ + "code": "x = [1, 2, 3]\nx.append(x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing4.golden_py3 b/v3/example-code/aliasing/aliasing4.golden_py3 new file mode 100644 index 000000000..0d440f81a --- /dev/null +++ b/v3/example-code/aliasing/aliasing4.golden_py3 @@ -0,0 +1,67 @@ +{ + "code": "x = [1, 2, 3]\nx.append(x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing4.txt b/v3/example-code/aliasing/aliasing4.txt new file mode 100644 index 000000000..7ca952d22 --- /dev/null +++ b/v3/example-code/aliasing/aliasing4.txt @@ -0,0 +1,2 @@ +x = [1, 2, 3] +x.append(x) diff --git a/v3/example-code/aliasing/aliasing5.golden b/v3/example-code/aliasing/aliasing5.golden new file mode 100644 index 000000000..af82d0118 --- /dev/null +++ b/v3/example-code/aliasing/aliasing5.golden @@ -0,0 +1,455 @@ +{ + "code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing5.golden_py3 b/v3/example-code/aliasing/aliasing5.golden_py3 new file mode 100644 index 000000000..af82d0118 --- /dev/null +++ b/v3/example-code/aliasing/aliasing5.golden_py3 @@ -0,0 +1,455 @@ +{ + "code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing5.txt b/v3/example-code/aliasing/aliasing5.txt new file mode 100644 index 000000000..232486f7c --- /dev/null +++ b/v3/example-code/aliasing/aliasing5.txt @@ -0,0 +1,3 @@ +x = None +for i in range(5, 0, -1): + x = (i, x) diff --git a/v3/example-code/aliasing/aliasing6.golden b/v3/example-code/aliasing/aliasing6.golden new file mode 100644 index 000000000..71b2ac9b6 --- /dev/null +++ b/v3/example-code/aliasing/aliasing6.golden @@ -0,0 +1,327 @@ +{ + "code": "# wow, this looks gross :)\nt1 = (1, 2)\nt2 = (3, 4)\nt = [t1, t2]\nu = [t, t, t]\nu[1] = u\nt[0] = u\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 3 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 4 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing6.golden_py3 b/v3/example-code/aliasing/aliasing6.golden_py3 new file mode 100644 index 000000000..71b2ac9b6 --- /dev/null +++ b/v3/example-code/aliasing/aliasing6.golden_py3 @@ -0,0 +1,327 @@ +{ + "code": "# wow, this looks gross :)\nt1 = (1, 2)\nt2 = (3, 4)\nt = [t1, t2]\nu = [t, t, t]\nu[1] = u\nt[0] = u\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 3 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 4 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing6.txt b/v3/example-code/aliasing/aliasing6.txt new file mode 100644 index 000000000..5f9c1e8b5 --- /dev/null +++ b/v3/example-code/aliasing/aliasing6.txt @@ -0,0 +1,7 @@ +# wow, this looks gross :) +t1 = (1, 2) +t2 = (3, 4) +t = [t1, t2] +u = [t, t, t] +u[1] = u +t[0] = u diff --git a/v3/example-code/aliasing/aliasing7.golden b/v3/example-code/aliasing/aliasing7.golden new file mode 100644 index 000000000..fc49379b4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing7.golden @@ -0,0 +1,248 @@ +{ + "code": "x = (3, {'joe': 'M', 'jane': 'F'})\ny = (2, x)\nz = (1, y)\nw = (x, y, z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ], + "w": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing7.golden_py3 b/v3/example-code/aliasing/aliasing7.golden_py3 new file mode 100644 index 000000000..fc49379b4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing7.golden_py3 @@ -0,0 +1,248 @@ +{ + "code": "x = (3, {'joe': 'M', 'jane': 'F'})\ny = (2, x)\nz = (1, y)\nw = (x, y, z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ], + "w": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing7.txt b/v3/example-code/aliasing/aliasing7.txt new file mode 100644 index 000000000..6e709dafc --- /dev/null +++ b/v3/example-code/aliasing/aliasing7.txt @@ -0,0 +1,5 @@ +x = (3, {'joe': 'M', 'jane': 'F'}) +y = (2, x) +z = (1, y) +w = (x, y, z) + diff --git a/v3/example-code/aliasing/aliasing8.golden b/v3/example-code/aliasing/aliasing8.golden new file mode 100644 index 000000000..20ddeb5fb --- /dev/null +++ b/v3/example-code/aliasing/aliasing8.golden @@ -0,0 +1,229 @@ +{ + "code": "# test whether heap objects \"jiggle\" between steps\nx = [1, [2, [3, None]]]\ny = [4, [5, [6, None]]]\n\nx[1][1] = y[1] # hopefully no jiggle!\n\nx = set(['apple', 'banana', 'carrot'])\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 5 + ] + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 7 + ] + }, + "heap": { + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ], + "7": [ + "SET", + "carrot", + "apple", + "banana" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing8.golden_py3 b/v3/example-code/aliasing/aliasing8.golden_py3 new file mode 100644 index 000000000..20ddeb5fb --- /dev/null +++ b/v3/example-code/aliasing/aliasing8.golden_py3 @@ -0,0 +1,229 @@ +{ + "code": "# test whether heap objects \"jiggle\" between steps\nx = [1, [2, [3, None]]]\ny = [4, [5, [6, None]]]\n\nx[1][1] = y[1] # hopefully no jiggle!\n\nx = set(['apple', 'banana', 'carrot'])\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 5 + ] + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 7 + ] + }, + "heap": { + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ], + "7": [ + "SET", + "carrot", + "apple", + "banana" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing8.txt b/v3/example-code/aliasing/aliasing8.txt new file mode 100644 index 000000000..707d5196f --- /dev/null +++ b/v3/example-code/aliasing/aliasing8.txt @@ -0,0 +1,8 @@ +# test whether heap objects "jiggle" between steps +x = [1, [2, [3, None]]] +y = [4, [5, [6, None]]] + +x[1][1] = y[1] # hopefully no jiggle! + +x = set(['apple', 'banana', 'carrot']) + diff --git a/v3/example-code/chris-meyers/optFib.golden b/v3/example-code/chris-meyers/optFib.golden new file mode 100644 index 000000000..f3ea1e124 --- /dev/null +++ b/v3/example-code/chris-meyers/optFib.golden @@ -0,0 +1,51160 @@ +{ + "code": "# o p t F i b . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Animated Fibonacci Sequence\"\nBOLD = \"color:red;font-weight:bold;\"\n\nfibs = Matrix(1,20)\nfibs.tableAttr = 'cellspacing=\"0\" cellpadding=\"10\"'\nfibs[0,0] = 1\nfibs[0,1] = 1\n\nfor i in range(2,100) :\n fibs.style[0,i-1] = BOLD\n fibs.style[0,i-2] = BOLD\n fibs[0,i] = fibs[0,i-1]+fibs[0,i-2]\n fibs.title = \"Last 2 elements add for new one\"\n htmlPage.item1 = fibs.renderHtml(wrap=10)\n htmlPage.makeFrame() #break\n fibs.style[0,i-2] = \"\" # uncolor behind\n\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 2, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 2, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 3, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 3, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 4, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 4, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 5, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 5, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 6, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 6, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 7, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123581321
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123581321
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 7, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123581321
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123581321
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 8, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358132134
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358132134
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 8, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358132134
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358132134
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 9, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 9, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 10, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 10, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 11, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 11, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 12, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 12, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 13, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 13, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 14, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 14, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 15, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 15, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 16, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 16, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 17, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 17, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 18, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 18, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 19, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 19, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 20, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x21" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 20, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x21" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 21, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x22" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 21, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x22" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 22, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x23" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 22, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x23" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 23, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x24" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 23, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x24" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 24, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x25" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 24, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x25" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 25, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x26" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 25, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x26" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 26, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x27" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 26, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x27" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 27, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x28" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 27, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x28" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 28, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x29" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 28, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x29" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 29, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x30" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 29, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x30" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 30, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x31" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 30, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x31" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 31, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x32" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 31, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x32" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 32, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x33" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 32, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x33" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 33, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x34" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 33, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x34" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 34, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x35" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 34, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x35" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 35, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x36" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 35, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x36" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 36, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x37" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 36, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x37" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 37, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x38" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 37, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x38" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 38, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x39" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 38, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x39" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 39, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x40" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 39, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x40" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 40, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x41" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 40, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x41" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 41, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x42" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 41, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x42" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 42, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x43" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 42, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x43" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 43, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x44" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 43, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x44" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 44, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x45" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 44, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x45" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 45, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x46" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 45, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x46" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 46, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x47" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 46, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x47" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 47, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x48" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 47, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x48" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 48, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x49" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 48, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x49" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 49, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x50" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 49, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x50" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 50, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x51" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 50, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x51" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 51, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x52" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 51, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x52" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 52, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x53" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 52, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x53" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 53, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x54" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 53, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x54" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 54, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x55" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 54, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x55" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 55, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x56" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 55, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x56" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 56, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x57" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 56, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x57" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 57, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x58" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 57, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x58" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 58, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x59" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 58, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x59" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 59, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x60" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 59, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x60" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 60, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x61" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 60, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x61" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 61, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x62" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 61, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x62" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 62, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x63" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 62, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x63" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 63, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x64" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 63, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x64" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 64, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x65" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 64, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x65" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 65, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x66" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 65, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x66" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 66, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x67" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 66, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x67" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 67, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x68" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 67, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x68" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 68, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x69" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 68, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x69" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 69, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x70" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 69, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x70" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 70, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x71" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 70, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x71" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 71, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x72" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 71, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x72" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 72, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x73" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 72, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x73" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 73, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x74" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 73, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x74" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 74, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x75" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 74, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x75" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 75, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x76" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 75, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x76" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 76, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x77" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 76, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x77" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 77, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x78" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 77, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x78" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 78, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x79" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 78, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x79" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 79, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x80" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 79, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x80" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 80, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x81" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 80, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x81" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 81, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x82" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 81, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x82" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 82, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x83" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 82, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x83" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 83, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x84" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 83, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x84" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 84, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x85" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 84, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x85" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 85, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x86" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 85, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x86" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 86, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x87" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 86, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x87" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 87, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x88" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 87, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x88" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 88, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x89" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 88, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x89" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 89, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x90" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 89, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x90" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 90, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x91" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 90, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x91" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 91, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x92" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 91, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x92" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 92, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x93" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 92, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x93" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 93, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x94" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 93, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x94" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 94, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x95" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 94, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x95" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 95, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x96" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 95, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x96" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 96, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x97" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 96, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x97" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 97, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x98" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 97, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x98" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 98, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x99" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 98, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x99" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 99, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x100" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 99, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x100" + ] + }, + "line": 24, + "event": "step_line" + } + ] +} diff --git a/v3/example-code/chris-meyers/optFib.golden_py3 b/v3/example-code/chris-meyers/optFib.golden_py3 new file mode 100644 index 000000000..f3ea1e124 --- /dev/null +++ b/v3/example-code/chris-meyers/optFib.golden_py3 @@ -0,0 +1,51160 @@ +{ + "code": "# o p t F i b . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Animated Fibonacci Sequence\"\nBOLD = \"color:red;font-weight:bold;\"\n\nfibs = Matrix(1,20)\nfibs.tableAttr = 'cellspacing=\"0\" cellpadding=\"10\"'\nfibs[0,0] = 1\nfibs[0,1] = 1\n\nfor i in range(2,100) :\n fibs.style[0,i-1] = BOLD\n fibs.style[0,i-2] = BOLD\n fibs[0,i] = fibs[0,i-1]+fibs[0,i-2]\n fibs.title = \"Last 2 elements add for new one\"\n htmlPage.item1 = fibs.renderHtml(wrap=10)\n htmlPage.makeFrame() #break\n fibs.style[0,i-2] = \"\" # uncolor behind\n\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 2, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 2, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 3, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 3, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 4, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 4, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 5, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 5, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 6, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 6, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 7, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123581321
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123581321
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 7, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      1123581321
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      1123581321
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 8, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358132134
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358132134
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 8, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      112358132134
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      112358132134
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 9, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 9, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 10, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 10, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 11, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 11, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 12, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 12, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 13, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 13, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 14, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 14, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 15, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 15, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 16, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 16, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 17, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 17, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      8914423337761098715972584
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 18, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 18, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      89144233377610987159725844181
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 19, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 19, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 20, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x21" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 20, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x21" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 21, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x22" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 21, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x22" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 22, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x23" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 22, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x23" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      109461771128657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 23, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x24" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 23, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x24" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      10946177112865746368
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 24, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x25" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 24, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x25" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 25, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x26" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 25, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x26" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 26, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x27" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 26, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x27" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 27, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x28" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 27, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x28" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 28, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x29" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 28, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x29" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 29, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x30" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 29, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x30" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 30, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x31" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 30, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x31" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 31, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x32" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 31, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x32" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 32, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x33" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 32, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x33" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 33, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x34" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 33, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x34" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 34, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x35" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 34, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x35" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 35, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x36" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 35, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x36" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 36, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x37" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 36, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x37" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      134626921783093524578570288792274651493035224157817
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 37, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x38" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 37, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x38" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      13462692178309352457857028879227465149303522415781739088169
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 38, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x39" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 38, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x39" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 39, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x40" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 39, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x40" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 40, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x41" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 40, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x41" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 41, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x42" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 41, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x42" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 42, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x43" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 42, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x43" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 43, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x44" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 43, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x44" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 44, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x45" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 44, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x45" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 45, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x46" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 45, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x46" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 46, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x47" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 46, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x47" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      165580141267914296433494437701408733113490317018363119032971215073
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 47, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x48" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 47, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x48" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 48, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x49" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 48, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x49" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      16558014126791429643349443770140873311349031701836311903297121507348075269767778742049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 49, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x50" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 49, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x50" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 50, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x51" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 50, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x51" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 51, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x52" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 51, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x52" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      2036501107432951280099
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 52, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x53" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 52, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x53" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 53, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x54" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 53, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x54" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 54, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x55" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 54, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x55" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 55, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x56" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 55, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x56" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 56, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x57" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 56, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x57" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 57, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x58" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 57, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x58" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 58, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x59" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 58, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x59" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      20365011074329512800995331629117386267571272139583862445225851433717365435296162591286729879956722026041
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 59, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x60" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 59, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x60" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 60, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x61" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 60, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x61" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 61, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x62" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 61, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x62" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 62, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x63" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 62, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x63" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 63, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x64" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 63, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x64" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 64, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x65" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 64, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x65" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 65, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x66" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 65, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x66" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      250473078196140527395378816557470319842106102098577231716768017756527777890035288
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 66, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x67" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 66, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x67" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      25047307819614052739537881655747031984210610209857723171676801775652777789003528844945570212853
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 67, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x68" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 67, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x68" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 68, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x69" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 68, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x69" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 69, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x70" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 69, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x70" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 70, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x71" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 70, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x71" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 71, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x72" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 71, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x72" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 72, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x73" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 72, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x73" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 73, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x74" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 73, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x74" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 74, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x75" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 74, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x75" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 75, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x76" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 75, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x76" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 76, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x77" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 76, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x77" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 77, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x78" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 77, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x78" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      30806152117012949845401187926480651553304939313049695449286572111485077978050341645462290670755279397008847578944394323791464
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 78, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x79" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 78, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x79" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      3080615211701294984540118792648065155330493931304969544928657211148507797805034164546229067075527939700884757894439432379146414472334024676221
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 79, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x80" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 79, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x80" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 80, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x81" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 80, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x81" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 81, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x82" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 81, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x82" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 82, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x83" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 82, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x83" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 83, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x84" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 83, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x84" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 84, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x85" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 84, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x85" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 85, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x86" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 85, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x86" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 86, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x87" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 86, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x87" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 87, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x88" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 87, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x88" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      3788906237314390661305790721611591991948530947554971605006438163670882596954969111225854201961407274896736798916376386122581100087778366101931
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 88, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x89" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 88, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x89" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      37889062373143906613057907216115919919485309475549716050064381636708825969549691112258542019614072748967367989163763861225811000877783661019311779979416004714189
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 89, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x90" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 89, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x90" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 90, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x91" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 90, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x91" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 91, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x92" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 91, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x92" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 92, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x93" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 92, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x93" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 93, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x94" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 93, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x94" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 94, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x95" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 94, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x95" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      46600466103755303097540113804746346429122001604151218767381974027421986822316731940434634990099905
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 95, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x96" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 95, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x96" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      4660046610375530309754011380474634642912200160415121876738197402742198682231673194043463499009990551680708854858323072
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 96, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x97" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 96, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x97" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 97, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x98" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 97, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x98" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 98, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x99" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 98, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x99" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 99, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x100" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "fibs", + "i" + ], + "html_output": "\n\n

      Animated Fibonacci Sequence

      \n
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "i": 99, + "fibs": [ + "REF", + 19 + ], + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Fibonacci Sequence" + ], + [ + "item1", + "
      Last 2 elements add for new one
      \n\n \n
      11235813213455
      891442333776109871597258441816765
      1094617711286574636875025121393196418317811514229832040
      1346269217830935245785702887922746514930352241578173908816963245986102334155
      1655801412679142964334944377014087331134903170183631190329712150734807526976777874204912586269025
      203650110743295128009953316291173862675712721395838624452258514337173654352961625912867298799567220260411548008755920
      2504730781961405273953788165574703198421061020985772317167680177565277778900352884494557021285372723460248141117669030460994190392490709135
      308061521170129498454011879264806515533049393130496954492865721114850779780503416454622906707552793970088475789443943237914641447233402467622123416728348467685
      378890623731439066130579072161159199194853094755497160500643816367088259695496911122585420196140727489673679891637638612258110008777836610193117799794160047141892880067194370816120
      466004661037553030975401138047463464291220016041512187673819740274219868223167319404346349900999055168070885485832307283621143489848422977135301852344706746049218922995834555169026354224848179261915075
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x100" + ] + }, + "line": 24, + "event": "step_line" + } + ] +} diff --git a/v3/example-code/chris-meyers/optFib.txt b/v3/example-code/chris-meyers/optFib.txt new file mode 100644 index 000000000..f2d830a31 --- /dev/null +++ b/v3/example-code/chris-meyers/optFib.txt @@ -0,0 +1,25 @@ +# o p t F i b . p y +# +# Chris Meyers. 09/25/2013 +# +from htmlFrame import HtmlFrame +from matrix import Matrix + +htmlPage = HtmlFrame() +htmlPage.banner = "Animated Fibonacci Sequence" +BOLD = "color:red;font-weight:bold;" + +fibs = Matrix(1,20) +fibs.tableAttr = 'cellspacing="0" cellpadding="10"' +fibs[0,0] = 1 +fibs[0,1] = 1 + +for i in range(2,100) : + fibs.style[0,i-1] = BOLD + fibs.style[0,i-2] = BOLD + fibs[0,i] = fibs[0,i-1]+fibs[0,i-2] + fibs.title = "Last 2 elements add for new one" + htmlPage.item1 = fibs.renderHtml(wrap=10) + htmlPage.makeFrame() #break + fibs.style[0,i-2] = "" # uncolor behind + diff --git a/v3/example-code/chris-meyers/optKnapsack.golden b/v3/example-code/chris-meyers/optKnapsack.golden new file mode 100644 index 000000000..9fbdac5d5 --- /dev/null +++ b/v3/example-code/chris-meyers/optKnapsack.golden @@ -0,0 +1,14700 @@ +{ + "code": "# o p t K n a p s a c k . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nmaxwgt = 10\nvals = [0,10,40,30,50]\nwgts = [0, 5, 4, 6, 3]\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Knapsack Problem\"\nheaders=['wt'+str(i) for i in range(maxwgt+1)]\n\ninp = Matrix(len(vals),3)\ninp.title = \"Sack holds weight %s\" % maxwgt\ninp.dftFormat = \"
      %03s
      \"\ninp.tableAttr = 'border=\"1\" cellspacing=\"0\" cellpadding=\"4\"',\ninp.tableHeaders=['Item #','Weight','Value'] \nfor i in range(len(vals)) :\n inp.setrowVals(i, [i, wgts[i], vals[i]])\n\nframe = Matrix(1,2)\nframe[0,0] = inp.renderHtml()\nnItems = len(vals)\nbest = Matrix(nItems,maxwgt+1)\nbest.dftFormat = \"
      %03s
      \"\n\nfor i in range(1,nItems) :\n best.setrowVal(i,0)\nfor i in range(1,nItems) :\n for w in range(0,maxwgt+1) :\n remBest = best[i-1,w-wgts[i]]\n if remBest == None : remBest = 0\n newSolution = vals[i]+remBest\n if ((wgts[i] <= w and newSolution > best[i-1,w])) :\n best[i,w] = newSolution\n best.style[i,w] = \"background-color:pink\"\n best.title = \"Optimal solution for weight %s includes item %s\" % (w,i)\n best.tableAttr='border=\"1\" cellspacing=\"0\" cellpadding=\"4\"'\n best.tableHeaders=headers\n frame[0,1] = best.renderHtml()\n htmlPage.item1 = frame.renderHtml()\n htmlPage.makeFrame() #break\n else :\n best[i,w] = best[i-1,w]\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 1
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 4, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 4, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 40, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 10, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 10, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 10, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 2, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 10, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 2
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 3, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 70, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 3
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 3
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 3, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 70, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 3
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 3
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 3, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 3 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 3 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 3, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 3 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
        0
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 3 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
        0
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 4, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 4, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
        0
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 4 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
        0
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
        0
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 5 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
        0
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 6, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 50, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
        0
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 6 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
        0
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 7, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
        0
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 7 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
        0
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 8, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
        0
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 8 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
        0
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 9, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
        0
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 9 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
        0
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
       90
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 45, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "i", + "headers", + "inp", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "html_output": "\n\n

      Knapsack Problem

      \n
      \n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
       90
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 4, + "frame": [ + "REF", + 23 + ], + "inp": [ + "REF", + 22 + ], + "headers": [ + "REF", + 21 + ], + "w": 10, + "vals": [ + "REF", + 18 + ], + "remBest": 40, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 90, + "best": [ + "REF", + 24 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "\n\n \n
      Sack holds weight 10
      \n\n\n \n \n \n \n \n
      Item #WeightValue
        0
        0
        0
        1
        5
       10
        2
        4
       40
        3
        6
       30
        4
        3
       50
      Optimal solution for weight 10 includes item 4
      \n\n\n \n \n \n \n \n
      wt0wt1wt2wt3wt4wt5wt6wt7wt8wt9wt10
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
       10
       10
       10
       10
       10
       10
         
         
         
         
       40
       40
       40
       40
       40
       50
       50
         
         
         
         
       40
       40
       40
       40
       40
       50
       70
         
         
         
       50
       50
       50
       50
       90
       90
       90
       90
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "22": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 33, + "event": "step_line" + } + ] +} diff --git a/v3/example-code/chris-meyers/optKnapsack.golden_py3 b/v3/example-code/chris-meyers/optKnapsack.golden_py3 new file mode 100644 index 000000000..2737c2218 --- /dev/null +++ b/v3/example-code/chris-meyers/optKnapsack.golden_py3 @@ -0,0 +1,339 @@ +{ + "code": "# o p t K n a p s a c k . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nmaxwgt = 10\nvals = [0,10,40,30,50]\nwgts = [0, 5, 4, 6, 3]\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Knapsack Problem\"\nheaders=['wt'+str(i) for i in range(maxwgt+1)]\n\ninp = Matrix(len(vals),3)\ninp.title = \"Sack holds weight %s\" % maxwgt\ninp.dftFormat = \"
      %03s
      \"\ninp.tableAttr = 'border=\"1\" cellspacing=\"0\" cellpadding=\"4\"',\ninp.tableHeaders=['Item #','Weight','Value'] \nfor i in range(len(vals)) :\n inp.setrowVals(i, [i, wgts[i], vals[i]])\n\nframe = Matrix(1,2)\nframe[0,0] = inp.renderHtml()\nnItems = len(vals)\nbest = Matrix(nItems,maxwgt+1)\nbest.dftFormat = \"
      %03s
      \"\n\nfor i in range(1,nItems) :\n best.setrowVal(i,0)\nfor i in range(1,nItems) :\n for w in range(0,maxwgt+1) :\n remBest = best[i-1,w-wgts[i]]\n if remBest == None : remBest = 0\n newSolution = vals[i]+remBest\n if ((wgts[i] <= w and newSolution > best[i-1,w])) :\n best[i,w] = newSolution\n best.style[i,w] = \"background-color:pink\"\n best.title = \"Optimal solution for weight %s includes item %s\" % (w,i)\n best.tableAttr='border=\"1\" cellspacing=\"0\" cellpadding=\"4\"'\n best.tableHeaders=headers\n frame[0,1] = best.renderHtml()\n htmlPage.item1 = frame.renderHtml()\n htmlPage.makeFrame() #break\n else :\n best[i,w] = best[i-1,w]\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "maxwgt", + "vals", + "wgts", + "htmlPage", + "headers", + "inp", + "i", + "frame", + "nItems", + "best", + "w", + "remBest", + "newSolution" + ], + "stdout": "", + "exception_msg": "TypeError: unorderable types: int() > NoneType()", + "func_name": "", + "stack_to_render": [], + "globals": { + "wgts": [ + "REF", + 19 + ], + "nItems": 5, + "Matrix": [ + "REF", + 5 + ], + "maxwgt": 10, + "i": 1, + "frame": [ + "REF", + 24 + ], + "inp": [ + "REF", + 23 + ], + "headers": [ + "REF", + 22 + ], + "w": 5, + "vals": [ + "REF", + 18 + ], + "remBest": 0, + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "newSolution": 10, + "best": [ + "REF", + 25 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "LIST", + 0, + 10, + 40, + 30, + 50 + ], + "19": [ + "LIST", + 0, + 5, + 4, + 6, + 3 + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Knapsack Problem" + ], + [ + "item1", + "" + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "22": [ + "LIST", + "wt0", + "wt1", + "wt2", + "wt3", + "wt4", + "wt5", + "wt6", + "wt7", + "wt8", + "wt9", + "wt10" + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x3" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-5x11" + ] + }, + "line": 37, + "event": "exception" + } + ] +} diff --git a/v3/example-code/chris-meyers/optKnapsack.txt b/v3/example-code/chris-meyers/optKnapsack.txt new file mode 100644 index 000000000..e72b401ca --- /dev/null +++ b/v3/example-code/chris-meyers/optKnapsack.txt @@ -0,0 +1,47 @@ +# o p t K n a p s a c k . p y +# +# Chris Meyers. 09/25/2013 +# +from htmlFrame import HtmlFrame +from matrix import Matrix + +maxwgt = 10 +vals = [0,10,40,30,50] +wgts = [0, 5, 4, 6, 3] + +htmlPage = HtmlFrame() +htmlPage.banner = "Knapsack Problem" +headers=['wt'+str(i) for i in range(maxwgt+1)] + +inp = Matrix(len(vals),3) +inp.title = "Sack holds weight %s" % maxwgt +inp.dftFormat = "
      %03s
      " +inp.tableAttr = 'border="1" cellspacing="0" cellpadding="4"', +inp.tableHeaders=['Item #','Weight','Value'] +for i in range(len(vals)) : + inp.setrowVals(i, [i, wgts[i], vals[i]]) + +frame = Matrix(1,2) +frame[0,0] = inp.renderHtml() +nItems = len(vals) +best = Matrix(nItems,maxwgt+1) +best.dftFormat = "
      %03s
      " + +for i in range(1,nItems) : + best.setrowVal(i,0) +for i in range(1,nItems) : + for w in range(0,maxwgt+1) : + remBest = best[i-1,w-wgts[i]] + if remBest == None : remBest = 0 + newSolution = vals[i]+remBest + if ((wgts[i] <= w and newSolution > best[i-1,w])) : + best[i,w] = newSolution + best.style[i,w] = "background-color:pink" + best.title = "Optimal solution for weight %s includes item %s" % (w,i) + best.tableAttr='border="1" cellspacing="0" cellpadding="4"' + best.tableHeaders=headers + frame[0,1] = best.renderHtml() + htmlPage.item1 = frame.renderHtml() + htmlPage.makeFrame() #break + else : + best[i,w] = best[i-1,w] diff --git a/v3/example-code/chris-meyers/optMinpath.golden b/v3/example-code/chris-meyers/optMinpath.golden new file mode 100644 index 000000000..3d3b0e933 --- /dev/null +++ b/v3/example-code/chris-meyers/optMinpath.golden @@ -0,0 +1,5328 @@ +{ + "code": "# o p t M i n p a t h . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nfrom random import randint\nimport random\nrandom.seed(0) # for determinism\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Minimum Path from top to bottom\"\n\ndef renderTriangle(t) :\n t.dftFormat = \"
      %03s
      \"\n t.tableAttr='border=\"0\" cellspacing=\"0\" cellpadding=\"4\"'\n return t.renderHtml()\n\ndef minpath(nrows) :\n mat = Matrix(1,2)\n tri = Matrix(nrows,nrows)\n org = Matrix(nrows,nrows)\n for r in range(nrows) :\n vals = [randint(1,9) for c in range(r+1)]\n tri.setrowVals(r,vals)\n org.setrowVals(r,vals)\n\n org.title = \"Original Values\"\n mat[0,0] = renderTriangle(org)\n mat.tableAttr='border=\"1\" cellspacing=\"0\" cellpadding=\"4\"'\n\n tri.style.setrowVal(nrows-1,\"background-color:lightgreen\")\n for row in range(nrows-2,-1,-1) :\n for col in range(row+1) :\n left = tri[row+1,col]\n right= tri[row+1,col+1]\n this = tri[row,col]\n tri.style[row,col] = \"background-color:pink\"\n tri.title = \"Set to min(%s+%s, %s+%s)\" % (this,left,this,right)\n mat[0,1] = renderTriangle(tri)\n htmlPage.item1 = mat.renderHtml()\n htmlPage.makeFrame() #break\n tri[row,col] = best = min(this+left,this+right)\n tri.style[row,col] = \"background-color:lightgreen\"\n mat[0,1] = renderTriangle(tri)\n htmlPage.item1 = mat.renderHtml()\n htmlPage.banner = \"Miniumum cost is %s\" % best\n htmlPage.makeFrame() #break\n\nminpath(4)\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 3, + "mat": [ + "REF", + 23 + ], + "this": 3, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 0, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(3+8, 3+3)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(3+8, 3+3)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 3, + "mat": [ + "REF", + 23 + ], + "this": 3, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 0, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(3+8, 3+3)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(3+8, 3+3)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 5, + "mat": [ + "REF", + 23 + ], + "this": 5, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 3, + "col": 1, + "best": 6, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(5+3, 5+5)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        5
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(5+3, 5+5)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        5
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 5, + "mat": [ + "REF", + 23 + ], + "this": 5, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 3, + "col": 1, + "best": 6, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(5+3, 5+5)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        5
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(5+3, 5+5)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        5
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 6, + "mat": [ + "REF", + 23 + ], + "this": 4, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 5, + "col": 2, + "best": 8, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+5, 4+6)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+5, 4+6)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 6, + "mat": [ + "REF", + 23 + ], + "this": 4, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 5, + "col": 2, + "best": 8, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+5, 4+6)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        4
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+5, 4+6)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        4
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 8, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 6, + "col": 0, + "best": 9, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(7+6, 7+8)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(7+6, 7+8)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 8, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 6, + "col": 0, + "best": 9, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(7+6, 7+8)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(7+6, 7+8)
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 9, + "mat": [ + "REF", + 23 + ], + "this": 4, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 1, + "best": 13, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+8, 4+9)
      \n\n \n \n \n \n
        8
         
         
         
       13
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+8, 4+9)
      \n\n \n \n \n \n
        8
         
         
         
       13
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 9, + "mat": [ + "REF", + 23 + ], + "this": 4, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 1, + "best": 13, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+8, 4+9)
      \n\n \n \n \n \n
        8
         
         
         
       13
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(4+8, 4+9)
      \n\n \n \n \n \n
        8
         
         
         
       13
        4
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 12, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 13, + "col": 0, + "best": 12, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
        8
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
        8
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 12, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 13, + "col": 0, + "best": 12, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
        8
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
        8
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 12, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 13, + "col": 0, + "best": 20, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 20" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
       20
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 49, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Miniumum cost is 20

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
       20
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "c": 3, + "right": 12, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "__return__": null, + "r": 3, + "vals": [ + "REF", + 29 + ], + "org": [ + "REF", + 25 + ], + "left": 13, + "col": 0, + "best": 20, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "c", + "vals", + "row", + "col", + "left", + "right", + "this", + "best", + "__return__" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 20" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
       20
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "29": [ + "LIST", + 8, + 3, + 5, + 6 + ] + }, + "line": 49, + "event": "return" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Miniumum cost is 20

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
       20
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "module", + "random" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 20" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        8
         
         
         
        7
        4
         
         
        3
        5
        4
         
        8
        3
        5
        6
      Set to min(8+13, 8+12)
      \n\n \n \n \n \n
       20
         
         
         
       13
       12
         
         
        6
        8
        9
         
        8
        3
        5
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ] + }, + "line": 51, + "event": "return" + } + ] +} diff --git a/v3/example-code/chris-meyers/optMinpath.golden_py3 b/v3/example-code/chris-meyers/optMinpath.golden_py3 new file mode 100644 index 000000000..58e6cf14b --- /dev/null +++ b/v3/example-code/chris-meyers/optMinpath.golden_py3 @@ -0,0 +1,5300 @@ +{ + "code": "# o p t M i n p a t h . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nfrom random import randint\nimport random\nrandom.seed(0) # for determinism\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Minimum Path from top to bottom\"\n\ndef renderTriangle(t) :\n t.dftFormat = \"
      %03s
      \"\n t.tableAttr='border=\"0\" cellspacing=\"0\" cellpadding=\"4\"'\n return t.renderHtml()\n\ndef minpath(nrows) :\n mat = Matrix(1,2)\n tri = Matrix(nrows,nrows)\n org = Matrix(nrows,nrows)\n for r in range(nrows) :\n vals = [randint(1,9) for c in range(r+1)]\n tri.setrowVals(r,vals)\n org.setrowVals(r,vals)\n\n org.title = \"Original Values\"\n mat[0,0] = renderTriangle(org)\n mat.tableAttr='border=\"1\" cellspacing=\"0\" cellpadding=\"4\"'\n\n tri.style.setrowVal(nrows-1,\"background-color:lightgreen\")\n for row in range(nrows-2,-1,-1) :\n for col in range(row+1) :\n left = tri[row+1,col]\n right= tri[row+1,col+1]\n this = tri[row,col]\n tri.style[row,col] = \"background-color:pink\"\n tri.title = \"Set to min(%s+%s, %s+%s)\" % (this,left,this,right)\n mat[0,1] = renderTriangle(tri)\n htmlPage.item1 = mat.renderHtml()\n htmlPage.makeFrame() #break\n tri[row,col] = best = min(this+left,this+right)\n tri.style[row,col] = \"background-color:lightgreen\"\n mat[0,1] = renderTriangle(tri)\n htmlPage.item1 = mat.renderHtml()\n htmlPage.banner = \"Miniumum cost is %s\" % best\n htmlPage.makeFrame() #break\n\nminpath(4)\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 5, + "mat": [ + "REF", + 23 + ], + "this": 5, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 7, + "col": 0, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(5+7, 5+5)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(5+7, 5+5)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 5, + "mat": [ + "REF", + 23 + ], + "this": 5, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 7, + "col": 0, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(5+7, 5+5)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(5+7, 5+5)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 8, + "mat": [ + "REF", + 23 + ], + "this": 9, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 5, + "col": 1, + "best": 10, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(9+5, 9+8)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
        9
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(9+5, 9+8)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
        9
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 8, + "mat": [ + "REF", + 23 + ], + "this": 9, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 5, + "col": 1, + "best": 10, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(9+5, 9+8)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
        9
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(9+5, 9+8)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
        9
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 6, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 2, + "best": 14, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(8+8, 8+6)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(8+8, 8+6)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 6, + "mat": [ + "REF", + 23 + ], + "this": 8, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 8, + "col": 2, + "best": 14, + "row": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(8+8, 8+6)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
        8
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(8+8, 8+6)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
        8
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 14, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 10, + "col": 0, + "best": 14, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+10, 7+14)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+10, 7+14)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 14, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 10, + "col": 0, + "best": 14, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+10, 7+14)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+10, 7+14)
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 14, + "mat": [ + "REF", + 23 + ], + "this": 1, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 14, + "col": 1, + "best": 17, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(1+14, 1+14)
      \n\n \n \n \n \n
        7
         
         
         
       17
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(1+14, 1+14)
      \n\n \n \n \n \n
        7
         
         
         
       17
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 14, + "mat": [ + "REF", + 23 + ], + "this": 1, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 14, + "col": 1, + "best": 17, + "row": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(1+14, 1+14)
      \n\n \n \n \n \n
        7
         
         
         
       17
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(1+14, 1+14)
      \n\n \n \n \n \n
        7
         
         
         
       17
        1
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 15, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 17, + "col": 0, + "best": 15, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
        7
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
        7
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 15, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 17, + "col": 0, + "best": 15, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Minimum Path from top to bottom" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
        7
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 44, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Minimum Path from top to bottom

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
        7
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 15, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 17, + "col": 0, + "best": 22, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 22" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
       22
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 49, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Miniumum cost is 22

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
       22
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "minpath", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tri": [ + "REF", + 24 + ], + "right": 15, + "mat": [ + "REF", + 23 + ], + "this": 7, + "nrows": 4, + "__return__": null, + "r": 3, + "vals": [ + "REF", + 33 + ], + "org": [ + "REF", + 25 + ], + "left": 17, + "col": 0, + "best": 22, + "row": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "minpath", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "minpath_f1", + "ordered_varnames": [ + "nrows", + "mat", + "tri", + "org", + "r", + "vals", + "row", + "col", + "left", + "right", + "this", + "best", + "__return__" + ] + } + ], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 22" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
       22
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ], + "23": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x2" + ], + "24": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "25": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-4x4" + ], + "33": [ + "LIST", + 7, + 5, + 8, + 6 + ] + }, + "line": 49, + "event": "return" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "randint", + "random", + "htmlPage", + "renderTriangle", + "minpath" + ], + "html_output": "\n\n

      Miniumum cost is 22

      \n
      \n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
       22
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "renderTriangle": [ + "REF", + 21 + ], + "Matrix": [ + "REF", + 5 + ], + "randint": [ + "REF", + 18 + ], + "random": [ + "REF", + 19 + ], + "minpath": [ + "REF", + 22 + ], + "htmlPage": [ + "REF", + 20 + ], + "HtmlFrame": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "FUNCTION", + "randint(self, a, b)", + null + ], + "19": [ + "INSTANCE", + "module" + ], + "20": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Miniumum cost is 22" + ], + [ + "item1", + "\n\n \n
      Original Values
      \n\n \n \n \n \n
        7
         
         
         
        7
        1
         
         
        5
        9
        8
         
        7
        5
        8
        6
      Set to min(7+17, 7+15)
      \n\n \n \n \n \n
       22
         
         
         
       17
       15
         
         
       10
       14
       14
         
        7
        5
        8
        6
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "21": [ + "FUNCTION", + "renderTriangle(t)", + null + ], + "22": [ + "FUNCTION", + "minpath(nrows)", + null + ] + }, + "line": 51, + "event": "return" + } + ] +} diff --git a/v3/example-code/chris-meyers/optMinpath.txt b/v3/example-code/chris-meyers/optMinpath.txt new file mode 100644 index 000000000..a995454a5 --- /dev/null +++ b/v3/example-code/chris-meyers/optMinpath.txt @@ -0,0 +1,51 @@ +# o p t M i n p a t h . p y +# +# Chris Meyers. 09/25/2013 +# +from htmlFrame import HtmlFrame +from matrix import Matrix + +from random import randint +import random +random.seed(0) # for determinism + +htmlPage = HtmlFrame() +htmlPage.banner = "Minimum Path from top to bottom" + +def renderTriangle(t) : + t.dftFormat = "
      %03s
      " + t.tableAttr='border="0" cellspacing="0" cellpadding="4"' + return t.renderHtml() + +def minpath(nrows) : + mat = Matrix(1,2) + tri = Matrix(nrows,nrows) + org = Matrix(nrows,nrows) + for r in range(nrows) : + vals = [randint(1,9) for c in range(r+1)] + tri.setrowVals(r,vals) + org.setrowVals(r,vals) + + org.title = "Original Values" + mat[0,0] = renderTriangle(org) + mat.tableAttr='border="1" cellspacing="0" cellpadding="4"' + + tri.style.setrowVal(nrows-1,"background-color:lightgreen") + for row in range(nrows-2,-1,-1) : + for col in range(row+1) : + left = tri[row+1,col] + right= tri[row+1,col+1] + this = tri[row,col] + tri.style[row,col] = "background-color:pink" + tri.title = "Set to min(%s+%s, %s+%s)" % (this,left,this,right) + mat[0,1] = renderTriangle(tri) + htmlPage.item1 = mat.renderHtml() + htmlPage.makeFrame() #break + tri[row,col] = best = min(this+left,this+right) + tri.style[row,col] = "background-color:lightgreen" + mat[0,1] = renderTriangle(tri) + htmlPage.item1 = mat.renderHtml() + htmlPage.banner = "Miniumum cost is %s" % best + htmlPage.makeFrame() #break + +minpath(4) diff --git a/v3/example-code/chris-meyers/optSieve.golden b/v3/example-code/chris-meyers/optSieve.golden new file mode 100644 index 000000000..d46278082 --- /dev/null +++ b/v3/example-code/chris-meyers/optSieve.golden @@ -0,0 +1,22058 @@ +{ + "code": "# o p t S i e v e . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Animated Sieve of Erastosthenes\"\nBOLD = \"color:red;font-weight:bold;\"\n\nprimes = Matrix(1,20)\nprimes.tableAttr = 'cellspacing=\"0\" cellpadding=\"10\"'\nprimes[0,0] = 2\nnprimes = 1\n\nfor x in range(3,21) :\n primeSofar = True\n for px in range(nprimes) :\n primes.title = \"Testing if %s is divisible by primes so far\" % x\n primes.style[0,px] = BOLD\n htmlPage.item1 = primes.renderHtml(wrap=5)\n htmlPage.makeFrame() #break\n primes.style[0,px] = \"\"\n div = primes[0,px]\n if x % div == 0 : primeSofar = False\n if not primeSofar : break\n\n if primeSofar :\n primes[0,nprimes] = x\n nprimes += 1\n primes.title = \"Found a new prime %s\" % x\n else :\n primes.title = \"Not Prime: %s mod %s is zero\" % (x,div)\n htmlPage.item1 = primes.renderHtml(wrap=5)\n htmlPage.makeFrame()\n\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 1, + "x": 3, + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "primes": [ + "REF", + 19 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 1, + "x": 3, + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "primes": [ + "REF", + 19 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 3
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 4, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 4, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 4 mod 2 is zero
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 5
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 6, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 6, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 6 mod 2 is zero
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 7
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 8, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 8, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 8 mod 2 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 9 mod 3 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 10, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 10, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 10 mod 2 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 11
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 12, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 12, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 12 mod 2 is zero
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 13
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 14, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 14, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 14 mod 2 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 15 mod 3 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 16, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 16, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 16 mod 2 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 17
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 18, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 18, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 18 mod 2 is zero
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 6, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 6, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 19
      \n\n \n
      235711
      131719
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 8, + "x": 20, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 17, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 8, + "x": 20, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 17, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + } + ] +} diff --git a/v3/example-code/chris-meyers/optSieve.golden_py3 b/v3/example-code/chris-meyers/optSieve.golden_py3 new file mode 100644 index 000000000..d46278082 --- /dev/null +++ b/v3/example-code/chris-meyers/optSieve.golden_py3 @@ -0,0 +1,22058 @@ +{ + "code": "# o p t S i e v e . p y\n#\n# Chris Meyers. 09/25/2013\n#\nfrom htmlFrame import HtmlFrame\nfrom matrix import Matrix\n\nhtmlPage = HtmlFrame()\nhtmlPage.banner = \"Animated Sieve of Erastosthenes\"\nBOLD = \"color:red;font-weight:bold;\"\n\nprimes = Matrix(1,20)\nprimes.tableAttr = 'cellspacing=\"0\" cellpadding=\"10\"'\nprimes[0,0] = 2\nnprimes = 1\n\nfor x in range(3,21) :\n primeSofar = True\n for px in range(nprimes) :\n primes.title = \"Testing if %s is divisible by primes so far\" % x\n primes.style[0,px] = BOLD\n htmlPage.item1 = primes.renderHtml(wrap=5)\n htmlPage.makeFrame() #break\n primes.style[0,px] = \"\"\n div = primes[0,px]\n if x % div == 0 : primeSofar = False\n if not primeSofar : break\n\n if primeSofar :\n primes[0,nprimes] = x\n nprimes += 1\n primes.title = \"Found a new prime %s\" % x\n else :\n primes.title = \"Not Prime: %s mod %s is zero\" % (x,div)\n htmlPage.item1 = primes.renderHtml(wrap=5)\n htmlPage.makeFrame()\n\n", + "trace": [ + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 1, + "x": 3, + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "primes": [ + "REF", + 19 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 1, + "x": 3, + "htmlPage": [ + "REF", + 18 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "primes": [ + "REF", + 19 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 3 is divisible by primes so far
      \n\n \n
      2
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 3
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 4, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 4, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 4 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 4 mod 2 is zero
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 2, + "x": 5, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 5 is divisible by primes so far
      \n\n \n
      23
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 5
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 6, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 6, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 6 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 6 mod 2 is zero
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 3, + "x": 7, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 7 is divisible by primes so far
      \n\n \n
      235
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 7
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 8, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 8, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 8 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 8 mod 2 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 9, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 9 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 9 mod 3 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 10, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 10, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 10 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 10 mod 2 is zero
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 4, + "x": 11, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 11 is divisible by primes so far
      \n\n \n
      2357
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 11
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 12, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 12, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 12 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 12 mod 2 is zero
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 5, + "x": 13, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 13 is divisible by primes so far
      \n\n \n
      235711
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 13
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 14, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 14, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 14 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 14 mod 2 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 15, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 15 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 15 mod 3 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 16, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 16, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 16 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 16 mod 2 is zero
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 6, + "x": 17, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 17 is divisible by primes so far
      \n\n \n
      235711
      13
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 17
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 18, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 18, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 18 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Not Prime: 18 mod 2 is zero
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 1, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 2, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 2, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 3, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 3, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 5, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 4, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 7, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 5, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 11, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 6, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 6, + "primeSofar": true, + "nprimes": 7, + "x": 19, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 13, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 19 is divisible by primes so far
      \n\n \n
      235711
      1317
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Found a new prime 19
      \n\n \n
      235711
      131719
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 8, + "x": 20, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 17, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "HtmlFrame", + "Matrix", + "htmlPage", + "BOLD", + "primes", + "nprimes", + "x", + "primeSofar", + "px", + "div" + ], + "html_output": "\n\n

      Animated Sieve of Erastosthenes

      \n
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      \n
      \n
      \n\n", + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Matrix": [ + "REF", + 5 + ], + "px": 0, + "primeSofar": true, + "nprimes": 8, + "x": 20, + "primes": [ + "REF", + 19 + ], + "HtmlFrame": [ + "REF", + 1 + ], + "div": 17, + "htmlPage": [ + "REF", + 18 + ], + "BOLD": "color:red;font-weight:bold;" + }, + "heap": { + "1": [ + "CLASS", + "HtmlFrame", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "makeEofPage", + [ + "REF", + 3 + ] + ], + [ + "makeFrame", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, template, banner)", + null + ], + "3": [ + "FUNCTION", + "makeEofPage(self)", + null + ], + "4": [ + "FUNCTION", + "makeFrame(self, template)", + null + ], + "5": [ + "CLASS", + "Matrix", + [], + [ + "__getitem__", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 7 + ] + ], + [ + "__setitem__", + [ + "REF", + 8 + ] + ], + [ + "__str__", + [ + "REF", + 9 + ] + ], + [ + "getcol", + [ + "REF", + 10 + ] + ], + [ + "getrow", + [ + "REF", + 11 + ] + ], + [ + "populate", + [ + "REF", + 12 + ] + ], + [ + "renderHtml", + [ + "REF", + 13 + ] + ], + [ + "setcolVal", + [ + "REF", + 14 + ] + ], + [ + "setcolVals", + [ + "REF", + 15 + ] + ], + [ + "setrowVal", + [ + "REF", + 16 + ] + ], + [ + "setrowVals", + [ + "REF", + 17 + ] + ] + ], + "6": [ + "FUNCTION", + "__getitem__(self, coords)", + null + ], + "7": [ + "FUNCTION", + "__init__(self, nrows, ncols, data, dftFormat, dftStyle, title, tableAttr, tableHeaders, Expand)", + null + ], + "8": [ + "FUNCTION", + "__setitem__(self, coords, value)", + null + ], + "9": [ + "FUNCTION", + "__str__(self)", + null + ], + "10": [ + "FUNCTION", + "getcol(self, col)", + null + ], + "11": [ + "FUNCTION", + "getrow(self, row)", + null + ], + "12": [ + "FUNCTION", + "populate(self, lists)", + null + ], + "13": [ + "FUNCTION", + "renderHtml(self, wrap)", + null + ], + "14": [ + "FUNCTION", + "setcolVal(self, col, value)", + null + ], + "15": [ + "FUNCTION", + "setcolVals(self, col, values)", + null + ], + "16": [ + "FUNCTION", + "setrowVal(self, row, value)", + null + ], + "17": [ + "FUNCTION", + "setrowVals(self, row, values)", + null + ], + "18": [ + "INSTANCE", + "HtmlFrame", + [ + "banner", + "Animated Sieve of Erastosthenes" + ], + [ + "item1", + "
      Testing if 20 is divisible by primes so far
      \n\n \n
      235711
      131719
      " + ], + [ + "item2", + "" + ], + [ + "item3", + "" + ], + [ + "outputOn", + true + ], + [ + "template", + "\n\n

      %(banner)s

      \n
      %(item1)s
      \n
      %(item2)s
      \n
      %(item3)s
      \n\n" + ] + ], + "19": [ + "INSTANCE_PPRINT", + "Matrix", + "Matrix-1x20" + ] + }, + "line": 24, + "event": "step_line" + } + ] +} diff --git a/v3/example-code/chris-meyers/optSieve.txt b/v3/example-code/chris-meyers/optSieve.txt new file mode 100644 index 000000000..98a2aa5da --- /dev/null +++ b/v3/example-code/chris-meyers/optSieve.txt @@ -0,0 +1,37 @@ +# o p t S i e v e . p y +# +# Chris Meyers. 09/25/2013 +# +from htmlFrame import HtmlFrame +from matrix import Matrix + +htmlPage = HtmlFrame() +htmlPage.banner = "Animated Sieve of Erastosthenes" +BOLD = "color:red;font-weight:bold;" + +primes = Matrix(1,20) +primes.tableAttr = 'cellspacing="0" cellpadding="10"' +primes[0,0] = 2 +nprimes = 1 + +for x in range(3,21) : + primeSofar = True + for px in range(nprimes) : + primes.title = "Testing if %s is divisible by primes so far" % x + primes.style[0,px] = BOLD + htmlPage.item1 = primes.renderHtml(wrap=5) + htmlPage.makeFrame() #break + primes.style[0,px] = "" + div = primes[0,px] + if x % div == 0 : primeSofar = False + if not primeSofar : break + + if primeSofar : + primes[0,nprimes] = x + nprimes += 1 + primes.title = "Found a new prime %s" % x + else : + primes.title = "Not Prime: %s mod %s is zero" % (x,div) + htmlPage.item1 = primes.renderHtml(wrap=5) + htmlPage.makeFrame() + diff --git a/v3/example-code/closures/closure1.golden b/v3/example-code/closures/closure1.golden new file mode 100644 index 000000000..51d175606 --- /dev/null +++ b/v3/example-code/closures/closure1.golden @@ -0,0 +1,567 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure1.golden_py3 b/v3/example-code/closures/closure1.golden_py3 new file mode 100644 index 000000000..51d175606 --- /dev/null +++ b/v3/example-code/closures/closure1.golden_py3 @@ -0,0 +1,567 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure1.txt b/v3/example-code/closures/closure1.txt new file mode 100644 index 000000000..1b784657b --- /dev/null +++ b/v3/example-code/closures/closure1.txt @@ -0,0 +1,7 @@ +def foo(y): + def bar(x): + return x + y + return bar + +b = foo(1) +b(2) diff --git a/v3/example-code/closures/closure2.golden b/v3/example-code/closures/closure2.golden new file mode 100644 index 000000000..57084967a --- /dev/null +++ b/v3/example-code/closures/closure2.golden @@ -0,0 +1,1764 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 3000, + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure2.golden_py3 b/v3/example-code/closures/closure2.golden_py3 new file mode 100644 index 000000000..57084967a --- /dev/null +++ b/v3/example-code/closures/closure2.golden_py3 @@ -0,0 +1,1764 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 3000, + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure2.txt b/v3/example-code/closures/closure2.txt new file mode 100644 index 000000000..dd036ff92 --- /dev/null +++ b/v3/example-code/closures/closure2.txt @@ -0,0 +1,15 @@ +def foo(y): + def bar(x): + return x + y + return bar + +def foo_deux(y): + def bar_deux(x): + return x + y + return bar_deux + +b = foo(1) +b_deux = foo_deux(1000) + +b(2) +b_deux(2000) diff --git a/v3/example-code/closures/closure3.golden b/v3/example-code/closures/closure3.golden new file mode 100644 index 000000000..7a968114d --- /dev/null +++ b/v3/example-code/closures/closure3.golden @@ -0,0 +1,1400 @@ +{ + "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 12, + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure3.golden_py3 b/v3/example-code/closures/closure3.golden_py3 new file mode 100644 index 000000000..7a968114d --- /dev/null +++ b/v3/example-code/closures/closure3.golden_py3 @@ -0,0 +1,1400 @@ +{ + "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 12, + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure3.txt b/v3/example-code/closures/closure3.txt new file mode 100644 index 000000000..9a34ed2d1 --- /dev/null +++ b/v3/example-code/closures/closure3.txt @@ -0,0 +1,10 @@ +def foo(x): + def bar(y): + def baz(z): + return len(x) + len(y) + len(z) + return baz + return bar([4,5,6,7]) + +l = [1,2,3] +x = foo(l) +x([8,9,10,11,12]) diff --git a/v3/example-code/closures/closure4.golden b/v3/example-code/closures/closure4.golden new file mode 100644 index 000000000..d26bb55af --- /dev/null +++ b/v3/example-code/closures/closure4.golden @@ -0,0 +1,1457 @@ +{ + "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure4.golden_py3 b/v3/example-code/closures/closure4.golden_py3 new file mode 100644 index 000000000..d26bb55af --- /dev/null +++ b/v3/example-code/closures/closure4.golden_py3 @@ -0,0 +1,1457 @@ +{ + "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure4.txt b/v3/example-code/closures/closure4.txt new file mode 100644 index 000000000..664625712 --- /dev/null +++ b/v3/example-code/closures/closure4.txt @@ -0,0 +1,8 @@ +def f(x): + def g(y): + return x + y + return g + +g1 = f(1) +g2 = f(2) +g1(3) + g2(4) diff --git a/v3/example-code/closures/closure5.golden b/v3/example-code/closures/closure5.golden new file mode 100644 index 000000000..a9cf39d66 --- /dev/null +++ b/v3/example-code/closures/closure5.golden @@ -0,0 +1,7684 @@ +{ + "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "__return__": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "__return__": 15, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "__return__": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "__return__": 15, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "__return__": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "__return__": 26, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "__return__": 26, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "__return__": 26, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "__return__": 26, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 26 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 3 + ], + "baz": 41, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure5.golden_py3 b/v3/example-code/closures/closure5.golden_py3 new file mode 100644 index 000000000..a9cf39d66 --- /dev/null +++ b/v3/example-code/closures/closure5.golden_py3 @@ -0,0 +1,7684 @@ +{ + "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "__return__": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "__return__": 15, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "__return__": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "__return__": 15, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "__return__": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "__return__": 26, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "__return__": 26, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "__return__": 26, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "__return__": 26, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 26 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 3 + ], + "baz": 41, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "() ", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure5.txt b/v3/example-code/closures/closure5.txt new file mode 100644 index 000000000..df094d247 --- /dev/null +++ b/v3/example-code/closures/closure5.txt @@ -0,0 +1,10 @@ +def f(x): + def g(y, z): + if z == 0: + return y + return g(x+y+z, z-1) + return lambda: g(0, x) + +foo = f(3) +bar = f(4) +baz = foo() + bar() diff --git a/v3/example-code/closures/lambda-param.golden b/v3/example-code/closures/lambda-param.golden new file mode 100644 index 000000000..0160bb7be --- /dev/null +++ b/v3/example-code/closures/lambda-param.golden @@ -0,0 +1,758 @@ +{ + "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print(a(20))\n\nfoo(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "__return__": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/lambda-param.golden_py3 b/v3/example-code/closures/lambda-param.golden_py3 new file mode 100644 index 000000000..0160bb7be --- /dev/null +++ b/v3/example-code/closures/lambda-param.golden_py3 @@ -0,0 +1,758 @@ +{ + "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print(a(20))\n\nfoo(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "__return__": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y) ", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/lambda-param.txt b/v3/example-code/closures/lambda-param.txt new file mode 100644 index 000000000..4944f2c20 --- /dev/null +++ b/v3/example-code/closures/lambda-param.txt @@ -0,0 +1,7 @@ +def foo(x): + bar(lambda y: x + y) + +def bar(a): + print(a(20)) + +foo(10) diff --git a/v3/example-code/closures/student-torture.golden b/v3/example-code/closures/student-torture.golden new file mode 100644 index 000000000..bb48036aa --- /dev/null +++ b/v3/example-code/closures/student-torture.golden @@ -0,0 +1,11 @@ +{ + "code": "# Example to torture students\n# from UC Berkeley CS61a\n# (only works in Python 3)\n\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\n\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 8)", + "line": 8, + "event": "uncaught_exception", + "offset": 22 + } + ] +} diff --git a/v3/example-code/closures/student-torture.golden_py3 b/v3/example-code/closures/student-torture.golden_py3 new file mode 100644 index 000000000..7e66f0e0d --- /dev/null +++ b/v3/example-code/closures/student-torture.golden_py3 @@ -0,0 +1,3726 @@ +{ + "code": "# Example to torture students\n# from UC Berkeley CS61a\n# (only works in Python 3)\n\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\n\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/student-torture.txt b/v3/example-code/closures/student-torture.txt new file mode 100644 index 000000000..c4fa0a10e --- /dev/null +++ b/v3/example-code/closures/student-torture.txt @@ -0,0 +1,17 @@ +# Example to torture students +# from UC Berkeley CS61a +# (only works in Python 3) + +def f(t): + def g(t): + def h(): + nonlocal t + t += 1 + return h, lambda: t + h, gt = g(0) + return h, gt, lambda: t + +h, gt, ft = f(0) +ft(), gt() +h() +ft(), gt() diff --git a/v3/example-code/comprehensions.golden b/v3/example-code/comprehensions.golden new file mode 100644 index 000000000..5e486bba9 --- /dev/null +++ b/v3/example-code/comprehensions.golden @@ -0,0 +1,1873 @@ +{ + "code": "# list comprehension\nl = [e**e for e in range(10) if e%2==0]\n# set comprehension\ns = {e**e for e in range(10) if e%2==0}\n# dict comprehension\nd = {e: e**e for e in range(10) if e%2==0}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 1 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 2 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 3 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 4 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 6 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 7 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 8 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 9 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "__return__": [ + "REF", + 3 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "2": [ + "listiterator", + "" + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "e", + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "4": [ + "listiterator", + "" + ], + "5": [ + "DICT", + [ + 0, + 1 + ], + [ + 8, + 16777216 + ], + [ + 2, + 4 + ], + [ + 4, + 256 + ], + [ + 6, + 46656 + ] + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "e", + "l", + "s", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "s": [ + "REF", + 3 + ], + "e": 9, + "d": [ + "REF", + 5 + ], + "l": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "DICT", + [ + 0, + 1 + ], + [ + 8, + 16777216 + ], + [ + 2, + 4 + ], + [ + 4, + 256 + ], + [ + 6, + 46656 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/example-code/comprehensions.golden_py3 b/v3/example-code/comprehensions.golden_py3 new file mode 100644 index 000000000..a298f236c --- /dev/null +++ b/v3/example-code/comprehensions.golden_py3 @@ -0,0 +1,2152 @@ +{ + "code": "# list comprehension\nl = [e**e for e in range(10) if e%2==0]\n# set comprehension\ns = {e**e for e in range(10) if e%2==0}\n# dict comprehension\nd = {e: e**e for e in range(10) if e%2==0}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 1 + ], + "__return__": [ + "REF", + 2 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "INSTANCE", + "range_iterator" + ], + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 4 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "3": [ + "INSTANCE", + "range_iterator" + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ], + "e": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "s": [ + "REF", + 4 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "5": [ + "INSTANCE", + "range_iterator" + ], + "6": [ + "DICT", + [ + 0, + 1 + ], + [ + 8, + 16777216 + ], + [ + 2, + 4 + ], + [ + 4, + 256 + ], + [ + 6, + 46656 + ] + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "l", + "s", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "s": [ + "REF", + 4 + ], + "d": [ + "REF", + 6 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 1, + 4, + 256, + 46656, + 16777216 + ], + "4": [ + "SET", + 256, + 1, + 4, + 46656, + 16777216 + ], + "6": [ + "DICT", + [ + 0, + 1 + ], + [ + 8, + 16777216 + ], + [ + 2, + 4 + ], + [ + 4, + 256 + ], + [ + 6, + 46656 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/example-code/comprehensions.txt b/v3/example-code/comprehensions.txt new file mode 100644 index 000000000..31a29ed73 --- /dev/null +++ b/v3/example-code/comprehensions.txt @@ -0,0 +1,6 @@ +# list comprehension +l = [e**e for e in range(10) if e%2==0] +# set comprehension +s = {e**e for e in range(10) if e%2==0} +# dict comprehension +d = {e: e**e for e in range(10) if e%2==0} diff --git a/v3/example-code/decorators.golden b/v3/example-code/decorators.golden new file mode 100644 index 000000000..bcd1bcf21 --- /dev/null +++ b/v3/example-code/decorators.golden @@ -0,0 +1,1892 @@ +{ + "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello", + "helloHTML" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ], + "helloHTML": "hello world" + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/decorators.golden_py3 b/v3/example-code/decorators.golden_py3 new file mode 100644 index 000000000..bcd1bcf21 --- /dev/null +++ b/v3/example-code/decorators.golden_py3 @@ -0,0 +1,1892 @@ +{ + "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello", + "helloHTML" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ], + "helloHTML": "hello world" + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "() ", + 1 + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/decorators.txt b/v3/example-code/decorators.txt new file mode 100644 index 000000000..b267bac5f --- /dev/null +++ b/v3/example-code/decorators.txt @@ -0,0 +1,12 @@ +def make_bold(fn): + return lambda : "" + fn() + "" + +def make_italic(fn): + return lambda : "" + fn() + "" + +@make_bold +@make_italic +def hello(): + return "hello world" + +helloHTML = hello() diff --git a/v3/example-code/fact.golden b/v3/example-code/fact.golden new file mode 100644 index 000000000..6f756d707 --- /dev/null +++ b/v3/example-code/fact.golden @@ -0,0 +1,1909 @@ +{ + "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint(fact(6))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 6, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 24, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 120, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 720, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "720\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/example-code/fact.golden_py3 b/v3/example-code/fact.golden_py3 new file mode 100644 index 000000000..6f756d707 --- /dev/null +++ b/v3/example-code/fact.golden_py3 @@ -0,0 +1,1909 @@ +{ + "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint(fact(6))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 6, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 24, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 120, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 720, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "720\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/example-code/fact.txt b/v3/example-code/fact.txt similarity index 88% rename from example-code/fact.txt rename to v3/example-code/fact.txt index d956324b0..a6b6f446f 100644 --- a/example-code/fact.txt +++ b/v3/example-code/fact.txt @@ -5,4 +5,4 @@ def fact(n): else: return n * fact(n - 1) -print fact(6) +print(fact(6)) diff --git a/v3/example-code/fib.golden b/v3/example-code/fib.golden new file mode 100644 index 000000000..7afe29d04 --- /dev/null +++ b/v3/example-code/fib.golden @@ -0,0 +1,7545 @@ +{ + "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/fib.golden_py3 b/v3/example-code/fib.golden_py3 new file mode 100644 index 000000000..55c3b980b --- /dev/null +++ b/v3/example-code/fib.golden_py3 @@ -0,0 +1,7560 @@ +{ + "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961, + 4052739537881 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881, + 6557470319842 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842, + 10610209857723 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723, + 17167680177565 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565, + 27777890035288 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288, + 44945570212853 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853, + 72723460248141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141, + 117669030460994 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994, + 190392490709135 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135, + 308061521170129 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129, + 498454011879264 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264, + 806515533049393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393, + 1304969544928657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657, + 2111485077978050 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050, + 3416454622906707 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2111485077978050, + 3416454622906707 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/example-code/fib.txt b/v3/example-code/fib.txt similarity index 76% rename from example-code/fib.txt rename to v3/example-code/fib.txt index 96c8799c2..d5447f19b 100644 --- a/example-code/fib.txt +++ b/v3/example-code/fib.txt @@ -2,10 +2,10 @@ arr = [1, 1] -print arr[0] +print(arr[0]) while True: - print arr[-1] + print(arr[-1]) tmp = sum(arr) arr.append(tmp) del arr[0] diff --git a/v3/example-code/filter.golden b/v3/example-code/filter.golden new file mode 100644 index 000000000..1e1111344 --- /dev/null +++ b/v3/example-code/filter.golden @@ -0,0 +1,1505 @@ +{ + "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print(\"HAHA \" + person + \" is too old!\")\n\nprint(\"There are \" + str(len(youngPeople)) + \" young people\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ], + "youngPeople": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\nThere are 3 young people\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/v3/example-code/filter.golden_py3 b/v3/example-code/filter.golden_py3 new file mode 100644 index 000000000..1e1111344 --- /dev/null +++ b/v3/example-code/filter.golden_py3 @@ -0,0 +1,1505 @@ +{ + "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print(\"HAHA \" + person + \" is too old!\")\n\nprint(\"There are \" + str(len(youngPeople)) + \" young people\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ], + "youngPeople": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\nThere are 3 young people\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/example-code/filter.txt b/v3/example-code/filter.txt similarity index 62% rename from example-code/filter.txt rename to v3/example-code/filter.txt index f3b3916fb..e09de854c 100644 --- a/example-code/filter.txt +++ b/v3/example-code/filter.txt @@ -6,6 +6,6 @@ for (person, age) in input: if age < 30: youngPeople.append(person) else: - print "HAHA", person, "is too old!" + print("HAHA " + person + " is too old!") -print "There are", len(youngPeople), "young people" +print("There are " + str(len(youngPeople)) + " young people") diff --git a/v3/example-code/for-else.golden b/v3/example-code/for-else.golden new file mode 100644 index 000000000..479a67f6f --- /dev/null +++ b/v3/example-code/for-else.golden @@ -0,0 +1,1634 @@ +{ + "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print(n)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "n": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 3 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 4, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 5, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 6, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 4 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 7, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 8, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 6 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 9, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/for-else.golden_py3 b/v3/example-code/for-else.golden_py3 new file mode 100644 index 000000000..ad8845399 --- /dev/null +++ b/v3/example-code/for-else.golden_py3 @@ -0,0 +1,1475 @@ +{ + "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print(n)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "n": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 4, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 5, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 6, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 7, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 8, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 9, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/for-else.txt b/v3/example-code/for-else.txt new file mode 100644 index 000000000..1eaf5fff7 --- /dev/null +++ b/v3/example-code/for-else.txt @@ -0,0 +1,9 @@ +# find primes using a for-else construct +for n in range(2, 10): + x_range = range(2, n) + for x in x_range: + if n % x == 0: + break + else: + # loop fell through without finding a factor + print(n) diff --git a/v3/example-code/gen_primes.golden b/v3/example-code/gen_primes.golden new file mode 100644 index 000000000..480ece9bb --- /dev/null +++ b/v3/example-code/gen_primes.golden @@ -0,0 +1,12544 @@ +{ + "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print(p)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/gen_primes.golden_py3 b/v3/example-code/gen_primes.golden_py3 new file mode 100644 index 000000000..802f27735 --- /dev/null +++ b/v3/example-code/gen_primes.golden_py3 @@ -0,0 +1,12512 @@ +{ + "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print(p)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 21, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 21, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 23, + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 3, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 3, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 4, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/gen_primes.txt b/v3/example-code/gen_primes.txt new file mode 100644 index 000000000..2b047187b --- /dev/null +++ b/v3/example-code/gen_primes.txt @@ -0,0 +1,14 @@ +# Use generator to generate a stream of primes +def gen_primes(): + n = 2 + while True: + for x in range(2, n): + if n % x == 0: + break + else: + yield n + n += 1 + +for p in gen_primes(): + print(p) + diff --git a/v3/example-code/genexpr.golden b/v3/example-code/genexpr.golden new file mode 100644 index 000000000..aebc24d6d --- /dev/null +++ b/v3/example-code/genexpr.golden @@ -0,0 +1,2170 @@ +{ + "code": "# NB: there's a known bug when frames of exited functions are displayed\nx = (i for i in range(10))\n\nfor e in x:\n print(e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0, + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2, + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3, + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5, + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8, + "__return__": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/genexpr.golden_py3 b/v3/example-code/genexpr.golden_py3 new file mode 100644 index 000000000..10ad0ebac --- /dev/null +++ b/v3/example-code/genexpr.golden_py3 @@ -0,0 +1,2170 @@ +{ + "code": "# NB: there's a known bug when frames of exited functions are displayed\nx = (i for i in range(10))\n\nfor e in x:\n print(e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0, + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2, + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3, + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5, + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8, + "__return__": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/genexpr.txt b/v3/example-code/genexpr.txt new file mode 100644 index 000000000..46bac3e62 --- /dev/null +++ b/v3/example-code/genexpr.txt @@ -0,0 +1,5 @@ +# NB: there's a known bug when frames of exited functions are displayed +x = (i for i in range(10)) + +for e in x: + print(e) diff --git a/v3/example-code/happy.golden b/v3/example-code/happy.golden new file mode 100644 index 000000000..ea1a6a7e0 --- /dev/null +++ b/v3/example-code/happy.golden @@ -0,0 +1,952 @@ +{ + "code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P", + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/happy.golden_py3 b/v3/example-code/happy.golden_py3 new file mode 100644 index 000000000..ea1a6a7e0 --- /dev/null +++ b/v3/example-code/happy.golden_py3 @@ -0,0 +1,952 @@ +{ + "code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P", + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/happy.txt b/v3/example-code/happy.txt new file mode 100644 index 000000000..c2dd73280 --- /dev/null +++ b/v3/example-code/happy.txt @@ -0,0 +1,12 @@ +# From "Teaching with Python" by John Zelle +def happy(): + print("Happy Birthday to you!") + +def sing(P): + happy() + happy() + print("Happy Birthday dear " + P + "!") + happy() + +# main +sing("Fred") diff --git a/v3/example-code/ins_sort.golden b/v3/example-code/ins_sort.golden new file mode 100644 index 000000000..837933f43 --- /dev/null +++ b/v3/example-code/ins_sort.golden @@ -0,0 +1,3538 @@ +{ + "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "__return__": null, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i", + "__return__" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "[3, 7, 8, 9, 10, 15, 29]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/example-code/ins_sort.golden_py3 b/v3/example-code/ins_sort.golden_py3 new file mode 100644 index 000000000..837933f43 --- /dev/null +++ b/v3/example-code/ins_sort.golden_py3 @@ -0,0 +1,3538 @@ +{ + "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "__return__": null, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i", + "__return__" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "[3, 7, 8, 9, 10, 15, 29]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/example-code/ins_sort.txt b/v3/example-code/ins_sort.txt similarity index 95% rename from example-code/ins_sort.txt rename to v3/example-code/ins_sort.txt index d6598fae2..4c2dacc0f 100644 --- a/example-code/ins_sort.txt +++ b/v3/example-code/ins_sort.txt @@ -10,4 +10,4 @@ def InsertionSort(A): input = [8, 3, 9, 15, 29, 7, 10] InsertionSort(input) -print input +print(input) diff --git a/v3/example-code/linked-lists/ll1.golden b/v3/example-code/linked-lists/ll1.golden new file mode 100644 index 000000000..1da0bbfb2 --- /dev/null +++ b/v3/example-code/linked-lists/ll1.golden @@ -0,0 +1,1977 @@ +{ + "code": "# use lists\nx = None\nfor i in range(6, 0, -1):\n x = [i, x]\n\n# use tuples\ny = None\nfor i in range(6, 0, -1):\n y = (i, y)\n\nx[1][0]=y[1][1] # courtesy of John DeNero!\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + [ + "REF", + 10 + ], + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll1.golden_py3 b/v3/example-code/linked-lists/ll1.golden_py3 new file mode 100644 index 000000000..1da0bbfb2 --- /dev/null +++ b/v3/example-code/linked-lists/ll1.golden_py3 @@ -0,0 +1,1977 @@ +{ + "code": "# use lists\nx = None\nfor i in range(6, 0, -1):\n x = [i, x]\n\n# use tuples\ny = None\nfor i in range(6, 0, -1):\n y = (i, y)\n\nx[1][0]=y[1][1] # courtesy of John DeNero!\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + [ + "REF", + 10 + ], + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll1.txt b/v3/example-code/linked-lists/ll1.txt new file mode 100644 index 000000000..223f228be --- /dev/null +++ b/v3/example-code/linked-lists/ll1.txt @@ -0,0 +1,12 @@ +# use lists +x = None +for i in range(6, 0, -1): + x = [i, x] + +# use tuples +y = None +for i in range(6, 0, -1): + y = (i, y) + +x[1][0]=y[1][1] # courtesy of John DeNero! + diff --git a/v3/example-code/linked-lists/ll2.golden b/v3/example-code/linked-lists/ll2.golden new file mode 100644 index 000000000..4d47af384 --- /dev/null +++ b/v3/example-code/linked-lists/ll2.golden @@ -0,0 +1,8047 @@ +{ + "code": "# use dicts\nx = None\nfor i in range(6, 0, -1):\n x = {'data': i, 'next': x}\n\n# use objects\nclass Node:\n def __init__(self, data, next):\n self.data = data\n self.next = next\n\ny = None\nfor i in range(6, 0, -1):\n y = Node(i, y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "y": [ + "REF", + 14 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll2.golden_py3 b/v3/example-code/linked-lists/ll2.golden_py3 new file mode 100644 index 000000000..4d47af384 --- /dev/null +++ b/v3/example-code/linked-lists/ll2.golden_py3 @@ -0,0 +1,8047 @@ +{ + "code": "# use dicts\nx = None\nfor i in range(6, 0, -1):\n x = {'data': i, 'next': x}\n\n# use objects\nclass Node:\n def __init__(self, data, next):\n self.data = data\n self.next = next\n\ny = None\nfor i in range(6, 0, -1):\n y = Node(i, y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 9 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 6, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 10 + ], + "data": 5, + "next": [ + "REF", + 9 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 9 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 11 + ], + "data": 4, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 12 + ], + "data": 3, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 13 + ], + "data": 2, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 14 + ], + "data": 1, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Node": [ + "REF", + 7 + ], + "y": [ + "REF", + 14 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + null + ], + "9": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 9 + ] + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll2.txt b/v3/example-code/linked-lists/ll2.txt new file mode 100644 index 000000000..3a1181499 --- /dev/null +++ b/v3/example-code/linked-lists/ll2.txt @@ -0,0 +1,15 @@ +# use dicts +x = None +for i in range(6, 0, -1): + x = {'data': i, 'next': x} + +# use objects +class Node: + def __init__(self, data, next): + self.data = data + self.next = next + +y = None +for i in range(6, 0, -1): + y = Node(i, y) + diff --git a/v3/example-code/list-comp.golden b/v3/example-code/list-comp.golden new file mode 100644 index 000000000..6a4ea270a --- /dev/null +++ b/v3/example-code/list-comp.golden @@ -0,0 +1,404 @@ +{ + "code": "ppl = ['Alice', 'Bob', 'Carol', 'Doug']\nexcited_ppl = [e + '!!' for e in ppl]\nppl_len = [len(x) for x in ppl]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Alice", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Bob", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Carol", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "excited_ppl": [ + "REF", + 2 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Alice" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Bob" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Carol" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Doug" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x", + "ppl_len" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "excited_ppl": [ + "REF", + 2 + ], + "ppl_len": [ + "REF", + 3 + ], + "e": "Doug", + "x": "Doug", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "3": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/example-code/list-comp.golden_py3 b/v3/example-code/list-comp.golden_py3 new file mode 100644 index 000000000..5d999ccae --- /dev/null +++ b/v3/example-code/list-comp.golden_py3 @@ -0,0 +1,926 @@ +{ + "code": "ppl = ['Alice', 'Bob', 'Carol', 'Doug']\nexcited_ppl = [e + '!!' for e in ppl]\nppl_len = [len(x) for x in ppl]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Alice" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Bob" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Carol" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "__return__": [ + "REF", + 3 + ], + "e": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Alice" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Bob" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Carol" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Doug", + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x", + "__return__" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ], + "5": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl", + "ppl_len" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 3 + ], + "ppl_len": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "5": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/example-code/list-comp.txt b/v3/example-code/list-comp.txt new file mode 100644 index 000000000..b5a158904 --- /dev/null +++ b/v3/example-code/list-comp.txt @@ -0,0 +1,3 @@ +ppl = ['Alice', 'Bob', 'Carol', 'Doug'] +excited_ppl = [e + '!!' for e in ppl] +ppl_len = [len(x) for x in ppl] diff --git a/v3/example-code/map.golden b/v3/example-code/map.golden new file mode 100644 index 000000000..5c65be1bb --- /dev/null +++ b/v3/example-code/map.golden @@ -0,0 +1,7043 @@ +{ + "code": "# Functional programming with map\n# Adapted from MIT 6.01 course notes (Section A.2.3)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef map(func, lst):\n if lst == []:\n return []\n else:\n return [func(lst[0])] + map(func, lst[1:])\n \ndef halveElements(lst):\n return map(lambda x: x / 2.0, lst)\n \ninput = [2, 4, 6, 8, 10]\noutput = halveElements(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "1.0" + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "2.0" + ], + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "3.0" + ], + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "4.0" + ], + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 10 + ], + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ], + "10": [ + "LIST" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "11": [ + "LIST", + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "12": [ + "LIST", + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "13": [ + "LIST", + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 14 + ], + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "14": [ + "LIST", + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input", + "output" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p_z", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "output": [ + "REF", + 15 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/map.golden_py3 b/v3/example-code/map.golden_py3 new file mode 100644 index 000000000..5c65be1bb --- /dev/null +++ b/v3/example-code/map.golden_py3 @@ -0,0 +1,7043 @@ +{ + "code": "# Functional programming with map\n# Adapted from MIT 6.01 course notes (Section A.2.3)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef map(func, lst):\n if lst == []:\n return []\n else:\n return [func(lst[0])] + map(func, lst[1:])\n \ndef halveElements(lst):\n return map(lambda x: x / 2.0, lst)\n \ninput = [2, 4, 6, 8, 10]\noutput = halveElements(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "1.0" + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "2.0" + ], + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "3.0" + ], + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "4.0" + ], + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 10 + ], + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ], + "10": [ + "LIST" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "11": [ + "LIST", + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "12": [ + "LIST", + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "13": [ + "LIST", + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 14 + ], + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "14": [ + "LIST", + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input", + "output" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p_z", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "output": [ + "REF", + 15 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + [ + "SPECIAL_FLOAT", + "1.0" + ], + [ + "SPECIAL_FLOAT", + "2.0" + ], + [ + "SPECIAL_FLOAT", + "3.0" + ], + [ + "SPECIAL_FLOAT", + "4.0" + ], + [ + "SPECIAL_FLOAT", + "5.0" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/example-code/map.txt b/v3/example-code/map.txt similarity index 100% rename from example-code/map.txt rename to v3/example-code/map.txt diff --git a/v3/example-code/memo_fib.golden b/v3/example-code/memo_fib.golden new file mode 100644 index 000000000..abb03047a --- /dev/null +++ b/v3/example-code/memo_fib.golden @@ -0,0 +1,10715 @@ +{ + "code": "# use memoization to make the recursive Fibonacci\n# implementation only take O(n) time and space\n\nMemoTable = {}\n\ndef MemoizedFib(n):\n if n <= 2:\n return 1\n\n if n in MemoTable:\n return MemoTable[n]\n\n MemoTable[n] = MemoizedFib(n-1) + MemoizedFib(n-2)\n return MemoTable[n]\n\n\nres = MemoizedFib(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 34, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 55, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib", + "res" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "res": 55, + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/example-code/memo_fib.golden_py3 b/v3/example-code/memo_fib.golden_py3 new file mode 100644 index 000000000..abb03047a --- /dev/null +++ b/v3/example-code/memo_fib.golden_py3 @@ -0,0 +1,10715 @@ +{ + "code": "# use memoization to make the recursive Fibonacci\n# implementation only take O(n) time and space\n\nMemoTable = {}\n\ndef MemoizedFib(n):\n if n <= 2:\n return 1\n\n if n in MemoTable:\n return MemoTable[n]\n\n MemoTable[n] = MemoizedFib(n-1) + MemoizedFib(n-2)\n return MemoTable[n]\n\n\nres = MemoizedFib(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 34, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 55, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib", + "res" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "res": 55, + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/example-code/memo_fib.txt b/v3/example-code/memo_fib.txt similarity index 100% rename from example-code/memo_fib.txt rename to v3/example-code/memo_fib.txt diff --git a/v3/example-code/metaclass.golden b/v3/example-code/metaclass.golden new file mode 100644 index 000000000..2dc46e253 --- /dev/null +++ b/v3/example-code/metaclass.golden @@ -0,0 +1,1883 @@ +{ + "code": "class Metaclass(type):\n def __new__(mcs, name, bases, dict_):\n print(\"__NEW__\")\n cls = super(Metaclass, mcs).__new__(mcs, name, bases, dict_)\n return cls\n\n def __init__(cls, name, bases, dict_):\n print(\"__INIT__\")\n super(Metaclass, cls).__init__(name, bases, dict_)\n\n def __call__(cls, *args):\n print(\"__CALL__\")\n obj = super(Metaclass, cls).__call__(*args)\n return obj\n\nclass MyObj(object):\n __metaclass__ = Metaclass\n\nMyObj()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "__NEW__\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "dict_": [ + "REF", + 5 + ], + "bases": [ + "REF", + 6 + ], + "name": "MyObj", + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "cls", + "name", + "bases", + "dict_" + ] + } + ], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "DICT", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "6": [ + "TUPLE", + [ + "REF", + 7 + ] + ], + "7": [ + "CLASS", + "object", + [], + [ + "__class__", + [ + "REF", + 8 + ] + ], + [ + "__delattr__", + [ + "REF", + 9 + ] + ], + [ + "__format__", + [ + "REF", + 10 + ] + ], + [ + "__getattribute__", + [ + "REF", + 11 + ] + ], + [ + "__hash__", + [ + "REF", + 12 + ] + ], + [ + "__init__", + [ + "REF", + 13 + ] + ], + [ + "__new__", + [ + "REF", + 14 + ] + ], + [ + "__reduce__", + [ + "REF", + 15 + ] + ], + [ + "__reduce_ex__", + [ + "REF", + 16 + ] + ], + [ + "__repr__", + [ + "REF", + 17 + ] + ], + [ + "__setattr__", + [ + "REF", + 18 + ] + ], + [ + "__sizeof__", + [ + "REF", + 19 + ] + ], + [ + "__str__", + [ + "REF", + 20 + ] + ], + [ + "__subclasshook__", + [ + "REF", + 21 + ] + ] + ], + "8": [ + "getset_descriptor", + "" + ], + "9": [ + "wrapper_descriptor", + "" + ], + "10": [ + "method_descriptor", + "" + ], + "11": [ + "wrapper_descriptor", + "" + ], + "12": [ + "wrapper_descriptor", + "" + ], + "13": [ + "wrapper_descriptor", + "" + ], + "14": [ + "FUNCTION", + "__new__(...)", + null + ], + "15": [ + "method_descriptor", + "" + ], + "16": [ + "method_descriptor", + "" + ], + "17": [ + "wrapper_descriptor", + "" + ], + "18": [ + "wrapper_descriptor", + "" + ], + "19": [ + "method_descriptor", + "" + ], + "20": [ + "wrapper_descriptor", + "" + ], + "21": [ + "classmethod_descriptor", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "__NEW__\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "dict_": [ + "REF", + 5 + ], + "bases": [ + "REF", + 6 + ], + "name": "MyObj", + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "cls", + "name", + "bases", + "dict_" + ] + } + ], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "DICT", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "6": [ + "TUPLE", + [ + "REF", + 7 + ] + ], + "7": [ + "CLASS", + "object", + [], + [ + "__class__", + [ + "REF", + 8 + ] + ], + [ + "__delattr__", + [ + "REF", + 9 + ] + ], + [ + "__format__", + [ + "REF", + 10 + ] + ], + [ + "__getattribute__", + [ + "REF", + 11 + ] + ], + [ + "__hash__", + [ + "REF", + 12 + ] + ], + [ + "__init__", + [ + "REF", + 13 + ] + ], + [ + "__new__", + [ + "REF", + 14 + ] + ], + [ + "__reduce__", + [ + "REF", + 15 + ] + ], + [ + "__reduce_ex__", + [ + "REF", + 16 + ] + ], + [ + "__repr__", + [ + "REF", + 17 + ] + ], + [ + "__setattr__", + [ + "REF", + 18 + ] + ], + [ + "__sizeof__", + [ + "REF", + 19 + ] + ], + [ + "__str__", + [ + "REF", + 20 + ] + ], + [ + "__subclasshook__", + [ + "REF", + 21 + ] + ] + ], + "8": [ + "getset_descriptor", + "" + ], + "9": [ + "wrapper_descriptor", + "" + ], + "10": [ + "method_descriptor", + "" + ], + "11": [ + "wrapper_descriptor", + "" + ], + "12": [ + "wrapper_descriptor", + "" + ], + "13": [ + "wrapper_descriptor", + "" + ], + "14": [ + "FUNCTION", + "__new__(...)", + null + ], + "15": [ + "method_descriptor", + "" + ], + "16": [ + "method_descriptor", + "" + ], + "17": [ + "wrapper_descriptor", + "" + ], + "18": [ + "wrapper_descriptor", + "" + ], + "19": [ + "method_descriptor", + "" + ], + "20": [ + "wrapper_descriptor", + "" + ], + "21": [ + "classmethod_descriptor", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "__NEW__\n__INIT__\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "dict_": [ + "REF", + 5 + ], + "bases": [ + "REF", + 6 + ], + "name": "MyObj", + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "cls", + "name", + "bases", + "dict_" + ] + } + ], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "DICT", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "6": [ + "TUPLE", + [ + "REF", + 7 + ] + ], + "7": [ + "CLASS", + "object", + [], + [ + "__class__", + [ + "REF", + 8 + ] + ], + [ + "__delattr__", + [ + "REF", + 9 + ] + ], + [ + "__format__", + [ + "REF", + 10 + ] + ], + [ + "__getattribute__", + [ + "REF", + 11 + ] + ], + [ + "__hash__", + [ + "REF", + 12 + ] + ], + [ + "__init__", + [ + "REF", + 13 + ] + ], + [ + "__new__", + [ + "REF", + 14 + ] + ], + [ + "__reduce__", + [ + "REF", + 15 + ] + ], + [ + "__reduce_ex__", + [ + "REF", + 16 + ] + ], + [ + "__repr__", + [ + "REF", + 17 + ] + ], + [ + "__setattr__", + [ + "REF", + 18 + ] + ], + [ + "__sizeof__", + [ + "REF", + 19 + ] + ], + [ + "__str__", + [ + "REF", + 20 + ] + ], + [ + "__subclasshook__", + [ + "REF", + 21 + ] + ] + ], + "8": [ + "getset_descriptor", + "" + ], + "9": [ + "wrapper_descriptor", + "" + ], + "10": [ + "method_descriptor", + "" + ], + "11": [ + "wrapper_descriptor", + "" + ], + "12": [ + "wrapper_descriptor", + "" + ], + "13": [ + "wrapper_descriptor", + "" + ], + "14": [ + "FUNCTION", + "__new__(...)", + null + ], + "15": [ + "method_descriptor", + "" + ], + "16": [ + "method_descriptor", + "" + ], + "17": [ + "wrapper_descriptor", + "" + ], + "18": [ + "wrapper_descriptor", + "" + ], + "19": [ + "method_descriptor", + "" + ], + "20": [ + "wrapper_descriptor", + "" + ], + "21": [ + "classmethod_descriptor", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "__NEW__\n__INIT__\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "dict_": [ + "REF", + 5 + ], + "bases": [ + "REF", + 6 + ], + "name": "MyObj", + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "cls", + "name", + "bases", + "dict_", + "__return__" + ] + } + ], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "DICT", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "6": [ + "TUPLE", + [ + "REF", + 7 + ] + ], + "7": [ + "CLASS", + "object", + [], + [ + "__class__", + [ + "REF", + 8 + ] + ], + [ + "__delattr__", + [ + "REF", + 9 + ] + ], + [ + "__format__", + [ + "REF", + 10 + ] + ], + [ + "__getattribute__", + [ + "REF", + 11 + ] + ], + [ + "__hash__", + [ + "REF", + 12 + ] + ], + [ + "__init__", + [ + "REF", + 13 + ] + ], + [ + "__new__", + [ + "REF", + 14 + ] + ], + [ + "__reduce__", + [ + "REF", + 15 + ] + ], + [ + "__reduce_ex__", + [ + "REF", + 16 + ] + ], + [ + "__repr__", + [ + "REF", + 17 + ] + ], + [ + "__setattr__", + [ + "REF", + 18 + ] + ], + [ + "__sizeof__", + [ + "REF", + 19 + ] + ], + [ + "__str__", + [ + "REF", + 20 + ] + ], + [ + "__subclasshook__", + [ + "REF", + 21 + ] + ] + ], + "8": [ + "getset_descriptor", + "" + ], + "9": [ + "wrapper_descriptor", + "" + ], + "10": [ + "method_descriptor", + "" + ], + "11": [ + "wrapper_descriptor", + "" + ], + "12": [ + "wrapper_descriptor", + "" + ], + "13": [ + "wrapper_descriptor", + "" + ], + "14": [ + "FUNCTION", + "__new__(...)", + null + ], + "15": [ + "method_descriptor", + "" + ], + "16": [ + "method_descriptor", + "" + ], + "17": [ + "wrapper_descriptor", + "" + ], + "18": [ + "wrapper_descriptor", + "" + ], + "19": [ + "method_descriptor", + "" + ], + "20": [ + "wrapper_descriptor", + "" + ], + "21": [ + "classmethod_descriptor", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n", + "func_name": "__call__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "args": [ + "REF", + 23 + ], + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__call__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__call___f2", + "ordered_varnames": [ + "cls", + "args" + ] + } + ], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "23": [ + "TUPLE" + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n", + "func_name": "__call__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "args": [ + "REF", + 23 + ], + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__call__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__call___f2", + "ordered_varnames": [ + "cls", + "args" + ] + } + ], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "23": [ + "TUPLE" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n__CALL__\n", + "func_name": "__call__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "args": [ + "REF", + 23 + ], + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__call__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__call___f2", + "ordered_varnames": [ + "cls", + "args" + ] + } + ], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "23": [ + "TUPLE" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n__CALL__\n", + "func_name": "__call__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "args": [ + "REF", + 23 + ], + "obj": [ + "REF", + 24 + ], + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__call__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__call___f2", + "ordered_varnames": [ + "cls", + "args", + "obj" + ] + } + ], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "23": [ + "TUPLE" + ], + "24": [ + "INSTANCE", + "MyObj" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n__CALL__\n", + "func_name": "__call__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "args": [ + "REF", + 23 + ], + "obj": [ + "REF", + 24 + ], + "cls": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__call__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__call___f2", + "ordered_varnames": [ + "cls", + "args", + "obj", + "__return__" + ] + } + ], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ], + "23": [ + "TUPLE" + ], + "24": [ + "INSTANCE", + "MyObj" + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "__NEW__\n__INIT__\n__CALL__\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "MyObj": [ + "REF", + 22 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "staticmethod", + "" + ], + "22": [ + "INSTANCE", + "Metaclass", + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 19, + "event": "return" + } + ] +} diff --git a/v3/example-code/metaclass.golden_py3 b/v3/example-code/metaclass.golden_py3 new file mode 100644 index 000000000..16f9fa582 --- /dev/null +++ b/v3/example-code/metaclass.golden_py3 @@ -0,0 +1,229 @@ +{ + "code": "class Metaclass(type):\n def __new__(mcs, name, bases, dict_):\n print(\"__NEW__\")\n cls = super(Metaclass, mcs).__new__(mcs, name, bases, dict_)\n return cls\n\n def __init__(cls, name, bases, dict_):\n print(\"__INIT__\")\n super(Metaclass, cls).__init__(name, bases, dict_)\n\n def __call__(cls, *args):\n print(\"__CALL__\")\n obj = super(Metaclass, cls).__call__(*args)\n return obj\n\nclass MyObj(object):\n __metaclass__ = Metaclass\n\nMyObj()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MyObj": [ + "REF", + 5 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "CLASS", + "MyObj", + [], + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Metaclass", + "MyObj" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MyObj": [ + "REF", + 5 + ], + "Metaclass": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Metaclass", + [ + "type" + ], + [ + "__call__", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ] + ], + "2": [ + "FUNCTION", + "__call__(cls, *args)", + null + ], + "3": [ + "FUNCTION", + "__init__(cls, name, bases, dict_)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "CLASS", + "MyObj", + [], + [ + "__metaclass__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 19, + "event": "return" + } + ] +} diff --git a/v3/example-code/metaclass.txt b/v3/example-code/metaclass.txt new file mode 100644 index 000000000..16f1d75c7 --- /dev/null +++ b/v3/example-code/metaclass.txt @@ -0,0 +1,19 @@ +class Metaclass(type): + def __new__(mcs, name, bases, dict_): + print("__NEW__") + cls = super(Metaclass, mcs).__new__(mcs, name, bases, dict_) + return cls + + def __init__(cls, name, bases, dict_): + print("__INIT__") + super(Metaclass, cls).__init__(name, bases, dict_) + + def __call__(cls, *args): + print("__CALL__") + obj = super(Metaclass, cls).__call__(*args) + return obj + +class MyObj(object): + __metaclass__ = Metaclass + +MyObj() diff --git a/v3/example-code/nonlocal.golden b/v3/example-code/nonlocal.golden new file mode 100644 index 000000000..7f7631792 --- /dev/null +++ b/v3/example-code/nonlocal.golden @@ -0,0 +1,11 @@ +{ + "code": "# 'nonlocal' keyword is only in Python 3\ndef outer():\n x = 1\n def inner():\n nonlocal x\n x = 2\n y = x\n print(\"inner:\", x, y)\n inner()\n print(\"outer:\", x)\n\nouter()\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 18 + } + ] +} diff --git a/v3/example-code/nonlocal.golden_py3 b/v3/example-code/nonlocal.golden_py3 new file mode 100644 index 000000000..e865e76cc --- /dev/null +++ b/v3/example-code/nonlocal.golden_py3 @@ -0,0 +1,667 @@ +{ + "code": "# 'nonlocal' keyword is only in Python 3\ndef outer():\n x = 1\n def inner():\n nonlocal x\n x = 2\n y = x\n print(\"inner:\", x, y)\n inner()\n print(\"outer:\", x)\n\nouter()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\n", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\n", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\nouter: 2\n", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\nouter: 2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p_z", + "ordered_varnames": [ + "inner", + "x", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/nonlocal.txt b/v3/example-code/nonlocal.txt new file mode 100644 index 000000000..4bd156762 --- /dev/null +++ b/v3/example-code/nonlocal.txt @@ -0,0 +1,12 @@ +# 'nonlocal' keyword is only in Python 3 +def outer(): + x = 1 + def inner(): + nonlocal x + x = 2 + y = x + print("inner:", x, y) + inner() + print("outer:", x) + +outer() diff --git a/v3/example-code/oop_1.golden b/v3/example-code/oop_1.golden new file mode 100644 index 000000000..ef5496688 --- /dev/null +++ b/v3/example-code/oop_1.golden @@ -0,0 +1,1272 @@ +{ + "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\nprint(pat.salutation())\nprint(Staff601.salutation(pat))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_1.golden_py3 b/v3/example-code/oop_1.golden_py3 new file mode 100644 index 000000000..ef5496688 --- /dev/null +++ b/v3/example-code/oop_1.golden_py3 @@ -0,0 +1,1272 @@ +{ + "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\nprint(pat.salutation())\nprint(Staff601.salutation(pat))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + null + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/oop_1.txt b/v3/example-code/oop_1.txt similarity index 77% rename from example-code/oop_1.txt rename to v3/example-code/oop_1.txt index f072f69f2..d04790552 100644 --- a/example-code/oop_1.txt +++ b/v3/example-code/oop_1.txt @@ -11,15 +11,15 @@ class Staff601: return self.role + ' ' + self.name pat = Staff601() -print pat.course +print(pat.course) pat.name = 'Pat' pat.age = 60 pat.role = 'Professor' -print pat.building +print(pat.building) pat.building = 32 -print pat.building +print(pat.building) -print pat.salutation() -print Staff601.salutation(pat) +print(pat.salutation()) +print(Staff601.salutation(pat)) diff --git a/v3/example-code/oop_2.golden b/v3/example-code/oop_2.golden new file mode 100644 index 000000000..67d2ab57b --- /dev/null +++ b/v3/example-code/oop_2.golden @@ -0,0 +1,1135 @@ +{ + "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint(pat.salutation())\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "name": "Pat", + "self": [ + "REF", + 4 + ], + "years": 60, + "role": "Professor", + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "Professor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_2.golden_py3 b/v3/example-code/oop_2.golden_py3 new file mode 100644 index 000000000..67d2ab57b --- /dev/null +++ b/v3/example-code/oop_2.golden_py3 @@ -0,0 +1,1135 @@ +{ + "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint(pat.salutation())\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 4 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "salary": 100000, + "name": "Pat", + "self": [ + "REF", + 4 + ], + "years": 60, + "role": "Professor", + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "Professor Pat\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + null + ], + "3": [ + "FUNCTION", + "salutation(self)", + null + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "return" + } + ] +} diff --git a/example-code/oop_2.txt b/v3/example-code/oop_2.txt similarity index 95% rename from example-code/oop_2.txt rename to v3/example-code/oop_2.txt index c4f0a534d..014c82790 100644 --- a/example-code/oop_2.txt +++ b/v3/example-code/oop_2.txt @@ -17,5 +17,5 @@ class Staff601: return self.role + ' ' + self.name pat = Staff601('Pat', 'Professor', 60, 100000) -print pat.salutation() +print(pat.salutation()) diff --git a/v3/example-code/oop_inherit.golden b/v3/example-code/oop_inherit.golden new file mode 100644 index 000000000..21edf4ec3 --- /dev/null +++ b/v3/example-code/oop_inherit.golden @@ -0,0 +1,1152 @@ +{ + "code": "# Inheritance - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def giveRaise(self, percentage):\n self.salary = self.salary + self.salary * percentage\n\nclass Prof601(Staff601):\n salary = 100000\n\n def __init__(self, name, age):\n self.name = name\n self.giveRaise((age - 18) * 0.03)\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Prof601('Pat', 60)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 6 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_inherit.golden_py3 b/v3/example-code/oop_inherit.golden_py3 new file mode 100644 index 000000000..21edf4ec3 --- /dev/null +++ b/v3/example-code/oop_inherit.golden_py3 @@ -0,0 +1,1152 @@ +{ + "code": "# Inheritance - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def giveRaise(self, percentage):\n self.salary = self.salary + self.salary * percentage\n\nclass Prof601(Staff601):\n salary = 100000\n\n def __init__(self, name, age):\n self.name = name\n self.giveRaise((age - 18) * 0.03)\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Prof601('Pat', 60)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "percentage": 1.260, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "giveRaise_f2", + "ordered_varnames": [ + "self", + "percentage", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "age": 60, + "name": "Pat", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "name", + "age", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 6 + ], + "Prof601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + null + ], + "3": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + null + ], + "5": [ + "FUNCTION", + "salutation(self)", + null + ], + "6": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + [ + "SPECIAL_FLOAT", + "226000.0" + ] + ] + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/example-code/oop_inherit.txt b/v3/example-code/oop_inherit.txt similarity index 100% rename from example-code/oop_inherit.txt rename to v3/example-code/oop_inherit.txt diff --git a/v3/example-code/oop_small.golden b/v3/example-code/oop_small.golden new file mode 100644 index 000000000..4325327d6 --- /dev/null +++ b/v3/example-code/oop_small.golden @@ -0,0 +1,1089 @@ +{ + "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint(inst.salutation())\ninst.x = 100\nprint(inst.salutation())\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "B": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": "1 hello bye", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "100 hello bye", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n100 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_small.golden_py3 b/v3/example-code/oop_small.golden_py3 new file mode 100644 index 000000000..4325327d6 --- /dev/null +++ b/v3/example-code/oop_small.golden_py3 @@ -0,0 +1,1089 @@ +{ + "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint(inst.salutation())\ninst.x = 100\nprint(inst.salutation())\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "B": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": "1 hello bye", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "100 hello bye", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n100 hello bye\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "C": [ + "REF", + 3 + ], + "B": [ + "REF", + 2 + ], + "inst": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "3": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 4 + ] + ] + ], + "4": [ + "FUNCTION", + "salutation(self)", + null + ], + "5": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/example-code/oop_small.txt b/v3/example-code/oop_small.txt similarity index 78% rename from example-code/oop_small.txt rename to v3/example-code/oop_small.txt index e40400587..8a7ca559b 100644 --- a/example-code/oop_small.txt +++ b/v3/example-code/oop_small.txt @@ -10,6 +10,6 @@ class C(A,B): return '%d %s %s' % (self.x, self.y, self.z) inst = C() -print inst.salutation() +print(inst.salutation()) inst.x = 100 -print inst.salutation() +print(inst.salutation()) diff --git a/v3/example-code/py_tutorial.golden b/v3/example-code/py_tutorial.golden new file mode 100644 index 000000000..b2849cbd9 --- /dev/null +++ b/v3/example-code/py_tutorial.golden @@ -0,0 +1,4754 @@ +{ + "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print('yes!!!')\nelse:\n print('nooooooo')\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print('Hello ' + b)\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print(thisAge)\n\n# testing set membership\nif 18 in uniqueAges:\n print('There is an 18-year-old present!')\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.items():\n if worth < 1000000:\n print('haha ' + person + ' is not a millionaire')\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print('show me the money!')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142 + }, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes", + "firstName": "Rutherford" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 30, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 34, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 35, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 42, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 46, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 47, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "orderedUniqueAges": [ + "REF", + 5 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "uniqueAges": [ + "REF", + 4 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ] + }, + "line": 50, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT" + ] + }, + "line": 51, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ] + ] + }, + "line": 52, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ] + ] + }, + "line": 53, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 54, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 59, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 62, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "return" + } + ] +} diff --git a/v3/example-code/py_tutorial.golden_py3 b/v3/example-code/py_tutorial.golden_py3 new file mode 100644 index 000000000..b2849cbd9 --- /dev/null +++ b/v3/example-code/py_tutorial.golden_py3 @@ -0,0 +1,4754 @@ +{ + "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print('yes!!!')\nelse:\n print('nooooooo')\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print('Hello ' + b)\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print(thisAge)\n\n# testing set membership\nif 18 in uniqueAges:\n print('There is an 18-year-old present!')\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.items():\n if worth < 1000000:\n print('haha ' + person + ' is not a millionaire')\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print('show me the money!')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142 + }, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes", + "firstName": "Rutherford" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 30, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 34, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 35, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 42, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 46, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 47, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "orderedUniqueAges": [ + "REF", + 5 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "uniqueAges": [ + "REF", + 4 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ] + }, + "line": 50, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT" + ] + }, + "line": 51, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ] + ] + }, + "line": 52, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ] + ] + }, + "line": 53, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 54, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 59, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 62, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "return" + } + ] +} diff --git a/example-code/py_tutorial.txt b/v3/example-code/py_tutorial.txt similarity index 81% rename from example-code/py_tutorial.txt rename to v3/example-code/py_tutorial.txt index 5f1a230d1..e51ab9599 100644 --- a/example-code/py_tutorial.txt +++ b/v3/example-code/py_tutorial.txt @@ -14,9 +14,9 @@ s2 = firstName + ' ' + middleName + ' ' + lastName # 'if' statement - indentation matters! if (s == s2): - print 'yes!!!' + print('yes!!!') else: - print 'nooooooo' + print('nooooooo') # list (mutable sequence) beatles = ['John', 'Paul', 'George'] @@ -24,7 +24,7 @@ beatles.append('Ringo') # 'for' loop - indentation matters! for b in beatles: - print 'Hello', b + print('Hello ' + b) # tuple (immutable sequence) ages = (18, 21, 28, 21, 22, 18, 19, 34, 9) @@ -36,11 +36,11 @@ uniqueAges.remove(21) # no guaranteed order when iterating over a set for thisAge in uniqueAges: - print thisAge + print(thisAge) # testing set membership if 18 in uniqueAges: - print 'There is an 18-year-old present!' + print('There is an 18-year-old present!') # sorting beatles.sort() # in-place @@ -54,10 +54,10 @@ netWorth['Tom Cruise'] = 40000000 netWorth['Joe Postdoc'] = 20000 # iterating over key-value pairs: -for (person, worth) in netWorth.iteritems(): +for (person, worth) in netWorth.items(): if worth < 1000000: - print 'haha', person, 'is not a millionaire' + print('haha ' + person + ' is not a millionaire') # testing dict membership if 'Tom Cruise' in netWorth: - print 'show me the money!' + print('show me the money!') diff --git a/v3/example-code/raw_input.golden b/v3/example-code/raw_input.golden new file mode 100644 index 000000000..613736478 --- /dev/null +++ b/v3/example-code/raw_input.golden @@ -0,0 +1,33 @@ +{ + "code": "prefix = \"Hello \"\n\nn1 = raw_input(\"Enter your name\")\n\nn2 = raw_input(\"Enter another name\")\n\nres = prefix + n1 + \" and \" + n2\nprint(res)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "prompt": "Enter your name", + "event": "raw_input" + } + ] +} diff --git a/v3/example-code/raw_input.golden_py3 b/v3/example-code/raw_input.golden_py3 new file mode 100644 index 000000000..16dd1a0e6 --- /dev/null +++ b/v3/example-code/raw_input.golden_py3 @@ -0,0 +1,44 @@ +{ + "code": "prefix = \"Hello \"\n\nn1 = raw_input(\"Enter your name\")\n\nn2 = raw_input(\"Enter another name\")\n\nres = prefix + n1 + \" and \" + n2\nprint(res)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "exception_msg": "NameError: name 'raw_input' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 3, + "event": "exception" + } + ] +} diff --git a/v3/example-code/raw_input.txt b/v3/example-code/raw_input.txt new file mode 100644 index 000000000..f585d9b1c --- /dev/null +++ b/v3/example-code/raw_input.txt @@ -0,0 +1,8 @@ +prefix = "Hello " + +n1 = raw_input("Enter your name") + +n2 = raw_input("Enter another name") + +res = prefix + n1 + " and " + n2 +print(res) diff --git a/v3/example-code/raw_input_py3.golden b/v3/example-code/raw_input_py3.golden new file mode 100644 index 000000000..6cf9c2f64 --- /dev/null +++ b/v3/example-code/raw_input_py3.golden @@ -0,0 +1,44 @@ +{ + "code": "# In Python 3, raw_input is called input\nprefix = \"Hello \"\n\nn1 = input(\"Enter your name\")\n\nn2 = input(\"Enter another name\")\n\nres = prefix + n1 + \" and \" + n2\nprint(res)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "exception_msg": "NameError: name 'input' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/example-code/raw_input_py3.golden_py3 b/v3/example-code/raw_input_py3.golden_py3 new file mode 100644 index 000000000..7d064d6d0 --- /dev/null +++ b/v3/example-code/raw_input_py3.golden_py3 @@ -0,0 +1,33 @@ +{ + "code": "# In Python 3, raw_input is called input\nprefix = \"Hello \"\n\nn1 = input(\"Enter your name\")\n\nn2 = input(\"Enter another name\")\n\nres = prefix + n1 + \" and \" + n2\nprint(res)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "prefix" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "prefix": "Hello " + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "prompt": "Enter your name", + "event": "raw_input" + } + ] +} diff --git a/v3/example-code/raw_input_py3.txt b/v3/example-code/raw_input_py3.txt new file mode 100644 index 000000000..d71c4992f --- /dev/null +++ b/v3/example-code/raw_input_py3.txt @@ -0,0 +1,9 @@ +# In Python 3, raw_input is called input +prefix = "Hello " + +n1 = input("Enter your name") + +n2 = input("Enter another name") + +res = prefix + n1 + " and " + n2 +print(res) diff --git a/v3/example-code/sqrt.golden b/v3/example-code/sqrt.golden new file mode 100644 index 000000000..67a8e85cf --- /dev/null +++ b/v3/example-code/sqrt.golden @@ -0,0 +1,9331 @@ +{ + "code": "# Calculating square roots by Newton's method, inspired by SICP\n# http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.7\n\ndef sqrt(x):\n def average(a, b):\n return (a + b) / 2.0\n\n def is_good_enough(guess):\n return (abs((guess * guess) - x) < 0.001)\n\n def improve(guess):\n return average(guess, x / guess)\n\n def sqrt_iter(guess):\n if is_good_enough(guess):\n return guess\n else:\n return sqrt_iter(improve(guess))\n\n return sqrt_iter(1.0)\n\n\nans = sqrt(9)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": false, + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": false, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "__return__": 3.400, + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 3.400, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": false, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "__return__": 3.023, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 3.023, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": false, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "__return__": 3.000, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": true, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3.000, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3.000, + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt", + "ans" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p_z", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ], + "ans": 3.000 + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/v3/example-code/sqrt.golden_py3 b/v3/example-code/sqrt.golden_py3 new file mode 100644 index 000000000..67a8e85cf --- /dev/null +++ b/v3/example-code/sqrt.golden_py3 @@ -0,0 +1,9331 @@ +{ + "code": "# Calculating square roots by Newton's method, inspired by SICP\n# http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.7\n\ndef sqrt(x):\n def average(a, b):\n return (a + b) / 2.0\n\n def is_good_enough(guess):\n return (abs((guess * guess) - x) < 0.001)\n\n def improve(guess):\n return average(guess, x / guess)\n\n def sqrt_iter(guess):\n if is_good_enough(guess):\n return guess\n else:\n return sqrt_iter(improve(guess))\n\n return sqrt_iter(1.0)\n\n\nans = sqrt(9)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": false, + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "1.0" + ], + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": [ + "SPECIAL_FLOAT", + "9.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "SPECIAL_FLOAT", + "5.0" + ], + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": false, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": [ + "SPECIAL_FLOAT", + "5.0" + ], + "__return__": 3.400, + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 3.400, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": false, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "__return__": 3.023, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 3.023, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": false, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "__return__": 3.000, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": true, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3.000, + "guess": [ + "SPECIAL_FLOAT", + "5.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3.000, + "guess": [ + "SPECIAL_FLOAT", + "1.0" + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt", + "ans" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p_z", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ], + "ans": 3.000 + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/example-code/sqrt.txt b/v3/example-code/sqrt.txt similarity index 100% rename from example-code/sqrt.txt rename to v3/example-code/sqrt.txt diff --git a/v3/example-code/strtok.golden b/v3/example-code/strtok.golden new file mode 100644 index 000000000..3c5031e8f --- /dev/null +++ b/v3/example-code/strtok.golden @@ -0,0 +1,258 @@ +{ + "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint('Hi ' + firstName + ' ' + lastName)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": "John,Doe,1984,4,1,male" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male", + "firstName": "John" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "birthdate": [ + "REF", + 2 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "Hi John Doe\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/strtok.golden_py3 b/v3/example-code/strtok.golden_py3 new file mode 100644 index 000000000..3c5031e8f --- /dev/null +++ b/v3/example-code/strtok.golden_py3 @@ -0,0 +1,258 @@ +{ + "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint('Hi ' + firstName + ' ' + lastName)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": "John,Doe,1984,4,1,male" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male", + "firstName": "John" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "birthdate": [ + "REF", + 2 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "Hi John Doe\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/example-code/strtok.txt b/v3/example-code/strtok.txt similarity index 82% rename from example-code/strtok.txt rename to v3/example-code/strtok.txt index 96e8100d5..52e08f112 100644 --- a/example-code/strtok.txt +++ b/v3/example-code/strtok.txt @@ -6,4 +6,4 @@ lastName = tokens[1] birthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4])) isMale = (tokens[5] == 'male') -print 'Hi', firstName, lastName +print('Hi ' + firstName + ' ' + lastName) diff --git a/v3/example-code/sum-cubes.golden b/v3/example-code/sum-cubes.golden new file mode 100644 index 000000000..6eecbbe30 --- /dev/null +++ b/v3/example-code/sum-cubes.golden @@ -0,0 +1,1693 @@ +{ + "code": "def summation(n, term, next):\n total, k = 0, 1\n while k <= n:\n total, k = total + term(k), next(k)\n return total\n\ndef cube(k):\n return pow(k, 3)\n\ndef successor(k):\n return k + 1\n\ndef sum_cubes(n):\n return summation(n, cube, successor)\n\nsum_cubes(3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 1, + "k": 2, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "k": 2, + "n": 3, + "next": [ + "REF", + 3 + ], + "__return__": 1, + "total": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-cubes.golden_py3 b/v3/example-code/sum-cubes.golden_py3 new file mode 100644 index 000000000..6eecbbe30 --- /dev/null +++ b/v3/example-code/sum-cubes.golden_py3 @@ -0,0 +1,1693 @@ +{ + "code": "def summation(n, term, next):\n total, k = 0, 1\n while k <= n:\n total, k = total + term(k), next(k)\n return total\n\ndef cube(k):\n return pow(k, 3)\n\ndef successor(k):\n return k + 1\n\ndef sum_cubes(n):\n return summation(n, cube, successor)\n\nsum_cubes(3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 1, + "k": 2, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "k": 2, + "n": 3, + "next": [ + "REF", + 3 + ], + "__return__": 1, + "total": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-cubes.txt b/v3/example-code/sum-cubes.txt new file mode 100644 index 000000000..7eff416f7 --- /dev/null +++ b/v3/example-code/sum-cubes.txt @@ -0,0 +1,16 @@ +def summation(n, term, next): + total, k = 0, 1 + while k <= n: + total, k = total + term(k), next(k) + return total + +def cube(k): + return pow(k, 3) + +def successor(k): + return k + 1 + +def sum_cubes(n): + return summation(n, cube, successor) + +sum_cubes(3) diff --git a/v3/example-code/sum-list.golden b/v3/example-code/sum-list.golden new file mode 100644 index 000000000..c121417d9 --- /dev/null +++ b/v3/example-code/sum-list.golden @@ -0,0 +1,3466 @@ +{ + "code": "myList = (1, (2, (3, (4, (5, None)))))\n\ndef sumList(node, subtotal):\n if not node:\n return subtotal\n else:\n return sumList(node[1], subtotal + node[0])\n\ntotal = sumList(myList, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "__return__": 15, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "__return__": 15, + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "__return__": 15, + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "__return__": 15, + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "__return__": 15, + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "__return__": 15, + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 15, + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-list.golden_py3 b/v3/example-code/sum-list.golden_py3 new file mode 100644 index 000000000..c121417d9 --- /dev/null +++ b/v3/example-code/sum-list.golden_py3 @@ -0,0 +1,3466 @@ +{ + "code": "myList = (1, (2, (3, (4, (5, None)))))\n\ndef sumList(node, subtotal):\n if not node:\n return subtotal\n else:\n return sumList(node[1], subtotal + node[0])\n\ntotal = sumList(myList, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "__return__": 15, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "__return__": 15, + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "__return__": 15, + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "__return__": 15, + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "__return__": 15, + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "__return__": 15, + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 15, + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-list.txt b/v3/example-code/sum-list.txt new file mode 100644 index 000000000..9945a6a6b --- /dev/null +++ b/v3/example-code/sum-list.txt @@ -0,0 +1,9 @@ +myList = (1, (2, (3, (4, (5, None))))) + +def sumList(node, subtotal): + if not node: + return subtotal + else: + return sumList(node[1], subtotal + node[0]) + +total = sumList(myList, 0) diff --git a/v3/example-code/sum.golden b/v3/example-code/sum.golden new file mode 100644 index 000000000..5995d2750 --- /dev/null +++ b/v3/example-code/sum.golden @@ -0,0 +1,10163 @@ +{ + "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 36, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 7, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 49, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 8, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 64, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 9, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": 81, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "__return__": 10, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "__return__": 100, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "__return__": 11, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "385\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum.golden_py3 b/v3/example-code/sum.golden_py3 new file mode 100644 index 000000000..5995d2750 --- /dev/null +++ b/v3/example-code/sum.golden_py3 @@ -0,0 +1,10163 @@ +{ + "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 36, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 7, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 49, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 8, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 64, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 9, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": 81, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "__return__": 10, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "__return__": 100, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "__return__": 11, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "385\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/example-code/sum.txt b/v3/example-code/sum.txt similarity index 93% rename from example-code/sum.txt rename to v3/example-code/sum.txt index 99a8ace18..3fe651044 100644 --- a/example-code/sum.txt +++ b/v3/example-code/sum.txt @@ -13,4 +13,4 @@ def summation(low, high, f, next): def sumsquares(low, high): return summation(low, high, lambda x: x**2, lambda x: x+1) -print sumsquares(1, 10) +print(sumsquares(1, 10)) diff --git a/v3/example-code/towers_of_hanoi.golden b/v3/example-code/towers_of_hanoi.golden new file mode 100644 index 000000000..0b98e6d8c --- /dev/null +++ b/v3/example-code/towers_of_hanoi.golden @@ -0,0 +1,10996 @@ +{ + "code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/towers_of_hanoi.golden_py3 b/v3/example-code/towers_of_hanoi.golden_py3 new file mode 100644 index 000000000..0b98e6d8c --- /dev/null +++ b/v3/example-code/towers_of_hanoi.golden_py3 @@ -0,0 +1,10996 @@ +{ + "code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/example-code/towers_of_hanoi.txt b/v3/example-code/towers_of_hanoi.txt similarity index 100% rename from example-code/towers_of_hanoi.txt rename to v3/example-code/towers_of_hanoi.txt diff --git a/v3/example-code/varargs.golden b/v3/example-code/varargs.golden new file mode 100644 index 000000000..d12be8967 --- /dev/null +++ b/v3/example-code/varargs.golden @@ -0,0 +1,1015 @@ +{ + "code": "# Demonstrate *args and **kwargs\ndef f1(a, b, *rest):\n pass\n\nf1(1, 2)\nf1(1, 2, 3, 4, 5, 6, 7)\n\ndef f2(a, b, **kwrest):\n pass\n\nf2(1, 2, name='Bob', age=38)\n\ndef f3(a, b, *rest, **kwrest):\n pass\n\nf3(1, 2, 3, 4, name='Bob', age=38)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/varargs.golden_py3 b/v3/example-code/varargs.golden_py3 new file mode 100644 index 000000000..d12be8967 --- /dev/null +++ b/v3/example-code/varargs.golden_py3 @@ -0,0 +1,1015 @@ +{ + "code": "# Demonstrate *args and **kwargs\ndef f1(a, b, *rest):\n pass\n\nf1(1, 2)\nf1(1, 2, 3, 4, 5, 6, 7)\n\ndef f2(a, b, **kwrest):\n pass\n\nf2(1, 2, name='Bob', age=38)\n\ndef f3(a, b, *rest, **kwrest):\n pass\n\nf3(1, 2, 3, 4, name='Bob', age=38)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/varargs.txt b/v3/example-code/varargs.txt new file mode 100644 index 000000000..97da39bb9 --- /dev/null +++ b/v3/example-code/varargs.txt @@ -0,0 +1,16 @@ +# Demonstrate *args and **kwargs +def f1(a, b, *rest): + pass + +f1(1, 2) +f1(1, 2, 3, 4, 5, 6, 7) + +def f2(a, b, **kwrest): + pass + +f2(1, 2, name='Bob', age=38) + +def f3(a, b, *rest, **kwrest): + pass + +f3(1, 2, 3, 4, name='Bob', age=38) diff --git a/v3/example-code/wentworth_gcd.golden b/v3/example-code/wentworth_gcd.golden new file mode 100644 index 000000000..cc0273cb0 --- /dev/null +++ b/v3/example-code/wentworth_gcd.golden @@ -0,0 +1,3798 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print((\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y)))\n result = gcd(y, x % y, depth+1)\n print((\"%s result is %d\" % (indent, result)))\n return result\n\ndef main():\n m = 77\n n = 28\n print((\"Finding gcd(%d, %d)\" % (m,n)))\n g = gcd(m, n)\n print(('Greatest common divisor of %d, %d = %d'\n % (m, n, g)))\n\nmain()\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "indent": "******", + "__return__": 7, + "depth": 3, + "result": 7, + "y": 7, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "indent": "****", + "__return__": 7, + "depth": 2, + "result": 7, + "y": 21, + "x": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "indent": "**", + "__return__": 7, + "depth": 1, + "result": 7, + "y": 28, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/wentworth_gcd.golden_py3 b/v3/example-code/wentworth_gcd.golden_py3 new file mode 100644 index 000000000..cc0273cb0 --- /dev/null +++ b/v3/example-code/wentworth_gcd.golden_py3 @@ -0,0 +1,3798 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print((\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y)))\n result = gcd(y, x % y, depth+1)\n print((\"%s result is %d\" % (indent, result)))\n return result\n\ndef main():\n m = 77\n n = 28\n print((\"Finding gcd(%d, %d)\" % (m,n)))\n g = gcd(m, n)\n print(('Greatest common divisor of %d, %d = %d'\n % (m, n, g)))\n\nmain()\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "indent": "******", + "__return__": 7, + "depth": 3, + "result": 7, + "y": 7, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "indent": "****", + "__return__": 7, + "depth": 2, + "result": 7, + "y": 21, + "x": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "indent": "**", + "__return__": 7, + "depth": 1, + "result": 7, + "y": 28, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/wentworth_gcd.txt b/v3/example-code/wentworth_gcd.txt similarity index 64% rename from example-code/wentworth_gcd.txt rename to v3/example-code/wentworth_gcd.txt index b9d544fbd..683beffc2 100644 --- a/example-code/wentworth_gcd.txt +++ b/v3/example-code/wentworth_gcd.txt @@ -9,18 +9,18 @@ def gcd(x, y, depth=1): result = x # set provisional return value if y != 0: indent = "**" * depth - print("%s About to recursively call gcd(%d, %d)" % (indent, y, x%y)) + print(("%s About to recursively call gcd(%d, %d)" % (indent, y, x%y))) result = gcd(y, x % y, depth+1) - print("%s result is %d" % (indent, result)) + print(("%s result is %d" % (indent, result))) return result def main(): m = 77 n = 28 - print("Finding gcd(%d, %d)" % (m,n)) + print(("Finding gcd(%d, %d)" % (m,n))) g = gcd(m, n) - print('Greatest common divisor of %d, %d = %d' - % (m, n, g)) + print(('Greatest common divisor of %d, %d = %d' + % (m, n, g))) main() diff --git a/v3/example-code/wentworth_sumList.golden b/v3/example-code/wentworth_sumList.golden new file mode 100644 index 000000000..8809705d3 --- /dev/null +++ b/v3/example-code/wentworth_sumList.golden @@ -0,0 +1,4520 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print((\"Calling sumList(%s) recursively\" % e))\n v = sumList(e)\n print((\"sumList(%s) returned %s\" % (e, v)))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint((\"Calling sumList(%s)\" % testData))\nresult = sumList(testData)\nprint((\"Final sum of all numbers in initial list is %s\" % result))\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 40, + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 140, + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 210, + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\nFinal sum of all numbers in initial list is 210\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/v3/example-code/wentworth_sumList.golden_py3 b/v3/example-code/wentworth_sumList.golden_py3 new file mode 100644 index 000000000..8809705d3 --- /dev/null +++ b/v3/example-code/wentworth_sumList.golden_py3 @@ -0,0 +1,4520 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print((\"Calling sumList(%s) recursively\" % e))\n v = sumList(e)\n print((\"sumList(%s) returned %s\" % (e, v)))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint((\"Calling sumList(%s)\" % testData))\nresult = sumList(testData)\nprint((\"Final sum of all numbers in initial list is %s\" % result))\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 40, + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 140, + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 210, + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\nFinal sum of all numbers in initial list is 210\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/example-code/wentworth_sumList.txt b/v3/example-code/wentworth_sumList.txt similarity index 66% rename from example-code/wentworth_sumList.txt rename to v3/example-code/wentworth_sumList.txt index e286c2d69..30727f674 100644 --- a/example-code/wentworth_sumList.txt +++ b/v3/example-code/wentworth_sumList.txt @@ -9,9 +9,9 @@ def sumList(xs): sum = 0 for e in xs: if type(e) is list: - print("Calling sumList(%s) recursively" % e) + print(("Calling sumList(%s) recursively" % e)) v = sumList(e) - print("sumList(%s) returned %s" % (e, v)) + print(("sumList(%s) returned %s" % (e, v))) sum += v else: sum += e @@ -19,7 +19,7 @@ def sumList(xs): testData = [10, [20, 30, [40], 50], 60] -print("Calling sumList(%s)" % testData) +print(("Calling sumList(%s)" % testData)) result = sumList(testData) -print("Final sum of all numbers in initial list is %s" % result) +print(("Final sum of all numbers in initial list is %s" % result)) diff --git a/v3/example-code/wentworth_try_finally.golden b/v3/example-code/wentworth_try_finally.golden new file mode 100644 index 000000000..f305d1d32 --- /dev/null +++ b/v3/example-code/wentworth_try_finally.golden @@ -0,0 +1,2823 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print(\"x is \" + str(x))\n f(n-1)\n print(\"survived!\")\n finally:\n print(\"Bye from f where n = \" + str(n))\n\nf(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "exception" + } + ] +} diff --git a/v3/example-code/wentworth_try_finally.golden_py3 b/v3/example-code/wentworth_try_finally.golden_py3 new file mode 100644 index 000000000..5b02e3eb7 --- /dev/null +++ b/v3/example-code/wentworth_try_finally.golden_py3 @@ -0,0 +1,2913 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print(\"x is \" + str(x))\n f(n-1)\n print(\"survived!\")\n finally:\n print(\"Bye from f where n = \" + str(n))\n\nf(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "x": [ + "SPECIAL_FLOAT", + "10.0" + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "x": [ + "SPECIAL_FLOAT", + "5.0" + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "exception" + } + ] +} diff --git a/example-code/wentworth_try_finally.txt b/v3/example-code/wentworth_try_finally.txt similarity index 75% rename from example-code/wentworth_try_finally.txt rename to v3/example-code/wentworth_try_finally.txt index daab5e33c..b6617fa56 100644 --- a/example-code/wentworth_try_finally.txt +++ b/v3/example-code/wentworth_try_finally.txt @@ -9,10 +9,10 @@ def f(n): try: x = 10 / n - print "x is", x + print("x is " + str(x)) f(n-1) - print "survived!" + print("survived!") finally: - print "Bye from f where n =", n + print("Bye from f where n = " + str(n)) f(4) diff --git a/v3/favicon.ico b/v3/favicon.ico new file mode 100644 index 000000000..c9efc5844 Binary files /dev/null and b/v3/favicon.ico differ diff --git a/v3/generate_json_trace.py b/v3/generate_json_trace.py new file mode 100644 index 000000000..638d3620e --- /dev/null +++ b/v3/generate_json_trace.py @@ -0,0 +1,48 @@ +# Generates a JSON trace that is compatible with the js/pytutor.js frontend + +import sys, pg_logger, json +from optparse import OptionParser + +# To make regression tests work consistently across platforms, +# standardize display of floats to 3 significant figures +# +# Trick from: +# http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module +json.encoder.FLOAT_REPR = lambda f: ('%.3f' % f) + +def json_finalizer(input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + # sort_keys=True leads to printing in DETERMINISTIC order, but might + # screw up some old tests ... however, there is STILL non-determinism + # in Python 3.3 tests, ugh! + json_output = json.dumps(ret, indent=INDENT_LEVEL) + return json_output + +def js_var_finalizer(input_code, output_trace): + global JS_VARNAME + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) + return "var %s = %s;" % (JS_VARNAME, json_output) + +parser = OptionParser(usage="Generate JSON trace for pytutor") +parser.add_option('-c', '--cumulative', default=False, action='store_true', + help='output cumulative trace.') +parser.add_option('-p', '--heapPrimitives', default=False, action='store_true', + help='render primitives as heap objects.') +parser.add_option('-o', '--compact', default=False, action='store_true', + help='output compact trace.') +parser.add_option('-i', '--input', default=False, action='store', + help='JSON list of strings for simulated raw_input.', dest='raw_input_lst_json') +parser.add_option("--create_jsvar", dest="js_varname", default=None, + help="Create a JavaScript variable out of the trace") + +(options, args) = parser.parse_args() +INDENT_LEVEL = None if options.compact else 2 + +fin = sys.stdin if args[0] == "-" else open(args[0]) + +if options.js_varname: + JS_VARNAME = options.js_varname + print(pg_logger.exec_script_str_local(fin.read(), options.raw_input_lst_json, options.cumulative, options.heapPrimitives, js_var_finalizer)) +else: + print(pg_logger.exec_script_str_local(fin.read(), options.raw_input_lst_json, options.cumulative, options.heapPrimitives, json_finalizer)) diff --git a/v3/graphviz-binary-tree/binary_tree.py.WORKING b/v3/graphviz-binary-tree/binary_tree.py.WORKING new file mode 100644 index 000000000..3a51cf31c --- /dev/null +++ b/v3/graphviz-binary-tree/binary_tree.py.WORKING @@ -0,0 +1,168 @@ +# TODO: how do you set the BACKGROUND COLOR of a GraphViz node ... fill=? + +# TODO: make this work in both Python 2 and 3 + +from collections import defaultdict + +ID = 0 + +class TreeNode: + def __init__(self, dat): + self.data = str(dat) # convert to string for easy display in GraphViz + self.parent = None + self.left = None + self.right = None + + self.__penwidth = 1 # thickness of node border + + # HTML-like RGB hex values - e.g., "#bb0000" + self.__color = None # border color + self.__fill = None # internal node color + + # assign unique IDs in node creation order + global ID + self.id = 'n' + str(ID) + ID += 1 + + def set_border_color(self, col): + self.__color = col + + def set_fill(self, col): + self.__fill = col + + def set_width(self, w): + assert w > 0 + self.__penwidth = w + + def __str__(self): + ret = '%s[label="%s"' % (self.id, self.data) + if self.__penwidth > 1: + ret += ',penwidth=%d' % self.__penwidth + if self.__color: + ret += ',color="%s"' % self.__color + if self.__fill: + ret += ',fill="%s"' % self.__fill + ret += ']' + return ret + + +# render a binary tree of TreeNode objects starting at root in a pretty +# GraphViz format using the balanced tree hack from +# http://www.graphviz.org/content/FaqBalanceTree +def graphviz_render(root): + print 'digraph G{' + + queue = [] # each element is (node, level #) + + # Key: level number + # Value: sorted list of node IDs at that level (including phantom nodes) + nodes_by_level = defaultdict(list) + + + def print_phantom(parent_id, suffix): + phantom_id = parent_id + '_phantom_' + suffix + print '%s [label="",width=.1,style=invis]' % phantom_id + print '%s->%s [style=invis]' % (parent_id, phantom_id) + return phantom_id + + def bfs_visit(): + # base case + if not queue: + return + + n, level = queue.pop(0) + + print n # current node + if n.left or n.right: + if n.left: + print '%s->%s' % (n.id, n.left.id) + queue.append((n.left, level+1)) + nodes_by_level[level+1].append(n.left.id) + else: + # insert phantom to make tree look good + ph_id = print_phantom(n.id, 'L') + nodes_by_level[level+1].append(ph_id) + + # always insert invisible middle phantom + ph_id = print_phantom(n.id, 'M') + nodes_by_level[level+1].append(ph_id) + + if n.right: + print '%s->%s' % (n.id, n.right.id) + queue.append((n.right, level+1)) + nodes_by_level[level+1].append(n.right.id) + else: + # insert phantom to make tree look good + ph_id = print_phantom(n.id, 'R') + nodes_by_level[level+1].append(ph_id) + + bfs_visit() # recurse! + + queue.append((root, 1)) + bfs_visit() + + # make sure all nodes at the same level are vertically aligned + for level in nodes_by_level: + node_ids = nodes_by_level[level] + if len(node_ids) > 1: + print '{rank=same %s [style=invis]}' % '->'.join(node_ids) + + print '}' + + +if __name__ == "__main__": + # simple test tree + a = TreeNode('a') + + b0 = TreeNode('b0') + a.left = b0 + + b1 = TreeNode('b1') + a.right = b1 + + c0 = TreeNode('c0') + b0.left = c0 + + c1 = TreeNode('c1') + b0.right = c1 + b0.set_fill('red') + + c2 = TreeNode('c2') + b1.left = c2 + + d1 = TreeNode('d1') + c0.right = d1 + + d2 = TreeNode('d2') + c2.left = d2 + + d3 = TreeNode('d3') + c1.left = d3 + + d4 = TreeNode('d4') + c1.right = d4 + + graphviz_render(a) + + +''' +/* balanced tree hack from http://www.graphviz.org/content/FaqBalanceTree */ + +/* +digraph G { + a -> b0 + xb [label="",width=.1,style=invis] + a -> xb [style=invis] + a -> b1 + + {rank=same b0 -> xb -> b1 [style=invis]} + + b0 -> c0 + xc [label="",width=.1,style=invis] + b0 -> xc [style=invis] + b0 -> c1 + + {rank=same c0 -> xc -> c1 [style=invis]} +} +*/ +''' diff --git a/v3/graphviz-binary-tree/pg_bst.py b/v3/graphviz-binary-tree/pg_bst.py new file mode 100644 index 000000000..e51335b08 --- /dev/null +++ b/v3/graphviz-binary-tree/pg_bst.py @@ -0,0 +1,247 @@ +# Binary search tree + +class BSTNode: + def __init__(self, dat): + self.data = dat + self.parent = None + self.left = None + self.right = None + + def insert(self, dat): + if dat < self.data: + if not self.left: + n = BSTNode(dat) + self.left = n + n.parent = self + else: + self.left.insert(dat) + else: + if not self.right: + n = BSTNode(dat) + self.right = n + n.parent = self + else: + self.right.insert(dat) + + def pretty_print(self, level): + print ' ' * level + str(self.data), '(h=%d)' % self.height() + if self.left: + self.left.pretty_print(level + 1) + if self.right: + self.right.pretty_print(level + 1) + + def search(self, dat): + if self.data == dat: + return self + elif dat < self.data: + if self.left: + return self.left.search(dat) + else: + return None + else: + assert dat > self.data + if self.right: + return self.right.search(dat) + else: + return None + + def search_by_rank(self, r): + if self.rank == r: + return self + elif r < self.rank: + if self.left: + return self.left.search_by_rank(r) + else: + return None + else: + assert r > self.rank + if self.right: + return self.right.search_by_rank(r) + else: + return None + + def predecessor(self): + if self.left: + p = self.left + while p.right: + p = p.right + return p + else: + p = self.parent + while p and p.data > self.data: + p = p.parent + return p + + def successor(self): + if self.right: + s = self.right + while s.left: + s = s.left + return s + else: + p = self.parent + while p and p.data < self.data: + p = p.parent + return p + + def preorder(self, callback): + callback(self) + if self.left: + self.left.preorder(callback) + if self.right: + self.right.preorder(callback) + + def inorder(self, callback): + if self.left: + self.left.inorder(callback) + callback(self) + if self.right: + self.right.inorder(callback) + + def delete(self): + if self.left and self.right: + s = self.successor() + # gypsy switch! + self.data = s.data + s.delete() + elif self.left: + l_child = self.left + if self.parent.left == self: + self.parent.left = l_child + l_child.parent = self.parent + elif self.parent.right == self: + self.parent.right = l_child + l_child.parent = self.parent + elif self.right: + r_child = self.right + if self.parent.left == self: + self.parent.left = r_child + r_child.parent = self.parent + elif self.parent.right == self: + self.parent.right = r_child + r_child.parent = self.parent + else: + # no children + if self.parent: + if self.parent.left == self: + self.parent.left = None + elif self.parent.right == self: + self.parent.right = None + + def height(self): + if not self.left and not self.right: + return 0 + else: + l_height = r_height = 0 + if self.left: + l_height = self.left.height() + if self.right: + r_height = self.right.height() + return 1 + max(l_height, r_height) + + def mirror(self): + n = BSTNode(self.data) + if self.right: + n.left = self.right.mirror() + n.left.parent = n + if self.left: + n.right = self.left.mirror() + n.right.parent = n + return n + + +tree = BSTNode(10) +tree.insert(2) +tree.insert(4) +tree.insert(1) +tree.insert(5) +tree.insert(15) +tree.insert(12) + +tree.pretty_print(0) + +tree.insert(13) +print '---' +tree.pretty_print(0) + +print '--- MIRROR ---' +tree.mirror().pretty_print(0) + + +def search_check(n): + assert tree.search(n.data) == n + +tree.preorder(search_check) + +print '---' +def print_successor(n): + s = n.successor() + if s: + print n.data, 'SUCCESSOR:', s.data + else: + print n.data, 'NO SUCCESSOR' + +tree.preorder(print_successor) + +print '---' +def print_predecessor(n): + p = n.predecessor() + if p: + print n.data, 'PREDECESSOR:', p.data + else: + print n.data, 'NO PREDECESSOR' + +tree.preorder(print_predecessor) + +def pred_succ_check(n): + p = n.predecessor() + if p: + assert p.successor() == n + s = n.successor() + if s: + assert s.predecessor() == n + print n.data, "passed pred_succ_check!" + +print '---' +tree.preorder(pred_succ_check) + +rank = 0 +def augment_with_rank(n): + global rank + n.rank = rank + rank += 1 + +tree.inorder(augment_with_rank) +print '--- RANKS ---' +def print_with_ranks(n): + print n.data, 'RANK:', n.rank + +tree.preorder(print_with_ranks) + +print '--- SEARCH BY RANK ---' +for r in xrange(rank): + print r, tree.search_by_rank(r).data + +print '---' +tree.search(1).delete() +tree.pretty_print(0) +print '---' +tree.search(2).delete() +tree.pretty_print(0) +print '---' +tree.search(5).delete() +tree.pretty_print(0) +print '---' +tree.search(10).delete() +tree.pretty_print(0) +print '---' +tree.search(15).delete() +tree.pretty_print(0) +print '---' +tree.search(12).delete() +tree.pretty_print(0) +print '---' +tree.search(4).delete() +tree.pretty_print(0) + + diff --git a/v3/htmlFrame.py b/v3/htmlFrame.py new file mode 100644 index 000000000..ec57cfd22 --- /dev/null +++ b/v3/htmlFrame.py @@ -0,0 +1,34 @@ +# h t m l F r a m e . p y +# +# Chris Meyers. 09/25/2013 +# +# Holder for attributes to be applied to a template and +# a simple function to apply attributes to template and +# send it to the
      for display + +from pg_logger import setHTML + +dft_template = """ + +

      %(banner)s

      +
      %(item1)s
      +
      %(item2)s
      +
      %(item3)s
      + +""" + +class HtmlFrame : + def __init__ (self, template=dft_template, banner="") : + self.outputOn = True + self.template = template + self.banner = banner + self.item1 = self.item2 = self.item3 = "" + + def makeEofPage(self) : + pass + + def makeFrame (self,template=None) : + if not template : template = self.template + content = template % self.__dict__ + setHTML(content) + diff --git a/v3/html_module.py b/v3/html_module.py new file mode 100644 index 000000000..b9fd08df8 --- /dev/null +++ b/v3/html_module.py @@ -0,0 +1,2 @@ +def display_img(src): + setHTML('' % str(src)) diff --git a/v3/htmlexample_module.py b/v3/htmlexample_module.py new file mode 100644 index 000000000..f72cf6979 --- /dev/null +++ b/v3/htmlexample_module.py @@ -0,0 +1,71 @@ +# Example module for Online Python Tutor +# Philip Guo +# 2013-08-03 + +# To get the Online Python Tutor backend to import this custom module, +# add its filename ('htmlexample_module') to the CUSTOM_MODULE_IMPORTS +# tuple in pg_logger.py + +# To see an example of this module at work, write the following code in +# http://pythontutor.com/visualize.html +''' +from htmlexample_module import ColorTable + +t = ColorTable(3, 4) + +t.set_color(0, 0, 'red') +t.render_HTML() + +t.set_color(1, 1, 'green') +t.render_HTML() + +t.set_color(2, 2, 'blue') +t.render_HTML() + +for i in range(3): + for j in range(4): + t.set_color(i, j, 'gray') + t.render_HTML() +''' + + +# defines a simple table where you can set colors for individual rows and columns +class ColorTable: + def __init__(self, num_rows, num_columns): + self.num_rows = num_rows + self.num_columns = num_columns + + # create a 2D matrix of empty strings + self.table = [] + for i in range(self.num_rows): + new_lst = ['' for e in range(self.num_columns)] + self.table.append(new_lst) + + + # color must be a legal HTML color string + def set_color(self, row, column, color): + assert 0 <= row < self.num_rows + assert 0 <= column < self.num_columns + self.table[row][column] = color + + + # call this function whenever you want to render this table in HTML + def render_HTML(self): + # incrementally build up an HTML table string + html_string = '' + + for i in range(self.num_rows): + html_string += '' + for j in range(self.num_columns): + color = self.table[i][j] + if not color: + color = "white" + html_string += '''''' % color + html_string += '' + + html_string += '
      ' + + # then call the magic setHTML function + setHTML(html_string) + diff --git a/v3/iframe-embed-demo.html b/v3/iframe-embed-demo.html new file mode 100644 index 000000000..97f95ec5f --- /dev/null +++ b/v3/iframe-embed-demo.html @@ -0,0 +1,21 @@ + + + + + Online Python Tutor - iframe embed demo + + + + + + +

      + + + +

      + + + + + diff --git a/v3/iframe-embed.html b/v3/iframe-embed.html new file mode 100644 index 000000000..1a79cf609 --- /dev/null +++ b/v3/iframe-embed.html @@ -0,0 +1,31 @@ + + + + + Online Python Tutor - iframe embed page + + + + + + + + + + + + + + + + + + + + + +

      + + + diff --git a/v3/index.html b/v3/index.html new file mode 100644 index 000000000..19069a8f6 --- /dev/null +++ b/v3/index.html @@ -0,0 +1,284 @@ + + + + + + + +Online Python Tutor - Learn programming by visualizing code execution + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + +
      + +
      + +

      LEARN programming by visualizing code execution

      + + + + +

      Online Python Tutor is a +free educational tool created by Philip Guo +that helps students overcome a fundamental +barrier to learning programming: understanding what happens as the +computer executes each line of a program's source code. Using this +tool, a teacher or student can write a Python program in the Web +browser and visualize what the computer is doing step-by-step as it +executes the program.

      + +

      Over 500,000 people in over 165 countries have used +Online Python Tutor to understand and debug their programs, often as a +supplement to textbooks, lecture notes, and online programming +tutorials.

      + + + + + + +

      For instance, here is a visualization showing a program that recursively +finds the sum of a (cons-style) linked list. +Click the “Forward” button to see what happens as the +computer executes each line of code.

      + +
      + + + +

      +Read +the research paper – Philip J. Guo. Online Python Tutor: Embeddable +Web-Based Program Visualization for CS Education. In Proceedings +of the ACM Technical Symposium on Computer Science Education +(SIGCSE), March 2013. [BibTeX] +

      + + +
      + +
      + + + + + + + +
      + +
      + +

      SHARE live visualization sessions

      + +

      Click the “Start a shared session” button to allow an instructor or friend + to join your session. You can chat about your code and navigate + the visualization together to get live, real-time tutoring. Watch this one-minute + video demo: +

      + + + +

      Also, you can click the “Generate +permanent link” button (at the bottom of this +page) and paste that link in an email, social networking +post, or forum question. When recipients click on your link, they will +see the exact visualization you've created.

      + +

      For example, clicking this +link brings you directly to step 44 of 57 in a program that finds +prime numbers using the Python for-else construct.

      + +
      + +
      + +
      + +

      EMBED in any Web page

      + +

      Using a single line of JavaScript code, you can embed an Online Python Tutor +visualization within any Web page (as shown in the “Learn” +box above). The screenshot below shows a visualization +embedded within the online textbook for the introductory CS course at UC +Berkeley (CS61A): + +

      + + + + + +
      + + +
      + +

      +More Details: +

        + +
      • Online Python Tutor runs Python 2.7 and 3.3, hosted on any CGI-capable Web server. + +
      • Main technologies: Python with bdb for the + backend; HTML/CSS/JavaScript with jQuery, D3.js, jsPlumb, + TogetherJS, + and Ace for the frontend + +
      • Free, open-source BSD-licensed code on GitHub + +
      • View the project + documentation online. + +
      • Want to help out? I have lots of project + ideas. Email philip@pgbovine.net to learn more. + +
      +

      + +

      +Other Variants: +

      +

      + +
      + +
      + +
      + + + + + + + diff --git a/v3/js/ace/README.txt b/v3/js/ace/README.txt new file mode 100644 index 000000000..60b8df533 --- /dev/null +++ b/v3/js/ace/README.txt @@ -0,0 +1,4 @@ +This version of Ace was checked out from: +https://github.com/ajaxorg/ace-builds/ + +on 2014-07-04 diff --git a/v3/js/ace/src-min-noconflict/ace.js b/v3/js/ace/src-min-noconflict/ace.js new file mode 100644 index 000000000..97b91b011 --- /dev/null +++ b/v3/js/ace/src-min-noconflict/ace.js @@ -0,0 +1,11 @@ +(function(){function s(r){var i=function(e,t){return n("",e,t)},s=e;r&&(e[r]||(e[r]={}),s=e[r]);if(!s.define||!s.define.packaged)t.original=s.define,s.define=t,s.define.packaged=!0;if(!s.require||!s.require.packaged)n.original=s.require,s.require=i,s.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules||(t.modules={},t.payloads={}),t.payloads[e]=r,t.modules[e]=null},n=function(e,t,r){if(Object.prototype.toString.call(t)==="[object Array]"){var s=[];for(var o=0,u=t.length;o1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f=t.location||t.keyLocation;if(n===17&&f===1)a=t.timeStamp;else if(n===18&&o===3&&f===2){var l=-a;a=t.timeStamp,l+=a,l<3&&(u.altGr=!0)}}}if(n in r.MODIFIER_KEYS){switch(r.MODIFIER_KEYS[n]){case"Alt":o=2;break;case"Shift":o=4;break;case"Ctrl":o=1;break;default:o=8}n=-1}o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13)if(t.location||t.keyLocation===3){e(t,o,-n);if(t.defaultPrevented)return}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}var r=e("./keys"),i=e("./useragent");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
      "),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n._top=n.offsetTop),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||(k(),y++),A!==null&&(A=null),p=e.clientX,d=e.clientY,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!h)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor.container;e.draggable=!0,this.editor.renderer.$cursorLayer.setBlinking(!1),this.editor.setStyle("ace_dragging"),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f;var c={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined;if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:(typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined)}},h={};t.defineOptions=function(e,t,n){return e.$options||(h[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),i.implement(e,c),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},t.setDefaultValue=function(e,n,r){var i=h[e]||(h[e]={});i[n]&&(i.forwardTo?t.setDefaultValue(i.forwardTo,n,r):i[n].value=r)},t.setDefaultValues=function(e,n){Object.keys(n).forEach(function(r){t.setDefaultValue(e,r,n[r])})}}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){!e.isFocused()&&e.textInput&&e.textInput.onContextMenu(t),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousemove",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/tokenizer",["require","exports","module"],function(e,t,n){"use strict";var r=1e3,i=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token);c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;gr){while(l1&&n[0]!==i&&n.unshift(i),{tokens:f,state:n.length?n:i}}}).call(i.prototype),t.Tokenizer=i}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;tthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20),n.currentLine=t;return}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,o.end.row,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,a,f=e;t=Math.min(t,n.length-1);while(f<=t)a=this.getFoldLine(f,a),a?(o=[],a.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=u;for(var a=1;at){var f=i+t;if(e[f-1]>=d&&e[f]>=d){a(f);continue}if(e[f]==u||e[f]==l){for(f;f!=i-1;f--)if(e[f]==u)break;if(f>i){a(f);continue}f=i+t;for(f;f>2)),i-1);while(f>c&&e[f]c&&e[f]c&&e[f]==p)f--}else while(f>c&&e[f]c){a(++f);continue}f=i+t,a(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i];if(v){var m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={};if(this.__defineGetter__&&this.__defineSetter__&&typeof console!="undefined"&&console.error){var n=!1,r=function(){n||(n=!0,console.error("commmandKeyBinding has too many m's. use commandKeyBinding"))};this.__defineGetter__("commmandKeyBinding",function(){return r(),this.commandKeyBinding}),this.__defineSetter__("commmandKeyBinding",function(e){return r(),this.commandKeyBinding=e})}else this.commmandKeyBinding=this.commandKeyBinding;this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"passKeysToBrowser",bindKey:o("null","null"),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=n.lastRow||t.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}e.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e&&(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.$highlightTags=function(){var e=this.session;if(this.$highlightTagPending)return;var t=this;this.$highlightTagPending=!0,setTimeout(function(){t.$highlightTagPending=!1;var n=t.getCursorPosition(),r=new y(t.session,n.row,n.column),i=r.getCurrentToken();if(!i||i.type.indexOf("tag-name")===-1){e.removeMarker(e.$tagHighlight),e.$tagHighlight=null;return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;var t={text:e};this._signal("paste",t),this.insert(t.text,!0)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=new y(this.session,t.row,t.column),r=n.getCurrentToken(),i=r;i||(i=n.stepForward());if(!i)return;var s,o=!1,u={},a=t.column-i.start,f,l={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(i.value.match(/[{}()\[\]]/g))for(;a=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&n.isFocused()){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o
      "),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
      "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
      ")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
      ")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
      ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
      ")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+s.stringRepeat("\u00a0",n-1)+""):t.push(s.stringRepeat("\u00a0",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat("\u00a0",this.tabSize-1)}else var u=s.stringRepeat("\u00a0",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("
      "),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
      "),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat("\u00a0",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("
      ","
      "),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
      ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=1:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(a===1)var e=this.$measureNode.getBoundingClientRect(),t={height:e.height,width:e.width};else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font-family: \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;font-size: 12px;line-height: normal;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;min-width: 100%;}.ace_dragging, .ace_dragging * {cursor: move !important;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0px;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: block;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}';i.importCssString(m,"ace_editor");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e;if(!e)return;this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0)},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL)e|=this.$computeLayerConfig(),n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px";e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a)),!this.$maxLines&&this.$scrollPastEnd&&(i+=(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd);var l=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i<0),c=this.$vScroll!==l;c&&(this.$vScroll=l,this.scrollBarV.setVisible(l)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var h=Math.ceil(o/this.lineHeight)-1,p=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),d=p+h,v,m,g=this.lineHeight;p=e.screenToDocumentRow(p,0);var y=e.getFoldLine(p);y&&(p=y.start.row),v=e.documentToScreenRow(p,0),m=e.getRowLength(p)*g,d=Math.min(e.screenToDocumentRow(d,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(d)*g+m,s=this.scrollTop-v*g;var b=0;this.layerConfig.width!=u&&(b=this.CHANGE_H_SCROLL);if(f||c)b=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),c&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:p,firstRowScreen:v,lastRow:d,lineHeight:g,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/g)),height:this.$size.scrollerHeight},b},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.content.style.cursor!=e&&(this.content.style.cursor=e)},this.setMouseCursor=function(e){this.content.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;rr.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle;if(t.needle==undefined){var r=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(r)}this.$search.set(t);var i=this.$search.findAll(this.session);if(!i.length)return 0;this.$blockScrolling+=1;var s=this.multiSelect;n||s.toSingleRange(i[0]);for(var o=i.length;o--;)s.addRange(i[o],!0);return r&&s.rangeList.rangeAtPoint(r.start)&&s.addRange(r,!0),this.$blockScrolling-=1,i.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges,r=-1,s=n.filter(function(e){if(e.cursor.row==r)return!0;r=e.cursor.row});if(!n.length||s.length==n.length-1){var o=this.selection.getRange(),u=o.start.row,f=o.end.row,l=u==f;if(l){var c=this.session.getLength(),h;do h=this.session.getLine(f);while(/[=:]/.test(h)&&++f0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.doc.removeLines(u,f);p=this.$reAlignText(p,l),this.session.doc.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length-1?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
      "),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e.env&&e.env.editor instanceof s)return e.env.editor;var o=t.createEditSession(r.getInnerText(e));e.innerHTML="";var u=new s(new a(e));u.setSession(o);var f={document:o,editor:u,onResize:u.resize.bind(u,null)};return i.addListener(window,"resize",f.onResize),u.on("destroy",function(){i.removeListener(window,"resize",f.onResize)}),e.env=u.env=f,u},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}); + (function() { + ace.require(["ace/ace"], function(a) { + a && a.config.init(true); + if (!window.ace) + window.ace = a; + for (var key in a) if (a.hasOwnProperty(key)) + window.ace[key] = a[key]; + }); + })(); + \ No newline at end of file diff --git a/v3/js/ace/src-min-noconflict/mode-python.js b/v3/js/ace/src-min-noconflict/mode-python.js new file mode 100644 index 000000000..f80eb0e8a --- /dev/null +++ b/v3/js/ace/src-min-noconflict/mode-python.js @@ -0,0 +1 @@ +ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./python_highlight_rules").PythonHighlightRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:")};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/python"}.call(a.prototype),t.Mode=a}) \ No newline at end of file diff --git a/v3/js/codemirror/codemirror.js b/v3/js/codemirror/codemirror.js new file mode 100644 index 000000000..0ab217711 --- /dev/null +++ b/v3/js/codemirror/codemirror.js @@ -0,0 +1,7526 @@ +// This is CodeMirror (http://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + module.exports = mod(); + else if (typeof define == "function" && define.amd) // AMD + return define([], mod); + else // Plain browser env + this.CodeMirror = mod(); +})(function() { + "use strict"; + + // BROWSER SNIFFING + + // Kludges for bugs and behavior differences that can't be feature + // detected are enabled based on userAgent etc sniffing. + + var gecko = /gecko\/\d/i.test(navigator.userAgent); + // ie_uptoN means Internet Explorer version N or lower + var ie_upto10 = /MSIE \d/.test(navigator.userAgent); + var ie_upto7 = ie_upto10 && (document.documentMode == null || document.documentMode < 8); + var ie_upto8 = ie_upto10 && (document.documentMode == null || document.documentMode < 9); + var ie_upto9 = ie_upto10 && (document.documentMode == null || document.documentMode < 10); + var ie_11up = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent); + var ie = ie_upto10 || ie_11up; + var webkit = /WebKit\//.test(navigator.userAgent); + var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent); + var chrome = /Chrome\//.test(navigator.userAgent); + var presto = /Opera\//.test(navigator.userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var khtml = /KHTML\//.test(navigator.userAgent); + var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent); + var phantom = /PhantomJS/.test(navigator.userAgent); + + var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); + // This is woefully incomplete. Suggestions for alternative methods welcome. + var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent); + var mac = ios || /Mac/.test(navigator.platform); + var windows = /win/i.test(navigator.platform); + + var presto_version = presto && navigator.userAgent.match(/Version\/(\d*\.\d*)/); + if (presto_version) presto_version = Number(presto_version[1]); + if (presto_version && presto_version >= 15) { presto = false; webkit = true; } + // Some browsers use the wrong event properties to signal cmd/ctrl on OS X + var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); + var captureRightClick = gecko || (ie && !ie_upto8); + + // Optimize some code when these features are not used. + var sawReadOnlySpans = false, sawCollapsedSpans = false; + + // EDITOR CONSTRUCTOR + + // A CodeMirror instance represents an editor. This is the object + // that user code is usually dealing with. + + function CodeMirror(place, options) { + if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); + + this.options = options = options || {}; + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false); + setGuttersForLineNumbers(options); + + var doc = options.value; + if (typeof doc == "string") doc = new Doc(doc, options.mode); + this.doc = doc; + + var display = this.display = new Display(place, doc); + display.wrapper.CodeMirror = this; + updateGutters(this); + themeChanged(this); + if (options.lineWrapping) + this.display.wrapper.className += " CodeMirror-wrap"; + if (options.autofocus && !mobile) focusInput(this); + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput + draggingText: false, + highlight: new Delayed() // stores highlight worker timeout + }; + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie_upto10) setTimeout(bind(resetInput, this, true), 20); + + registerEventHandlers(this); + + var cm = this; + runInOp(this, function() { + cm.curOp.forceUpdate = true; + attachDoc(cm, doc); + + if ((options.autofocus && !mobile) || activeElt() == display.input) + setTimeout(bind(onFocus, cm), 20); + else + onBlur(cm); + + for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) + optionHandlers[opt](cm, options[opt], Init); + for (var i = 0; i < initHooks.length; ++i) initHooks[i](cm); + }); + } + + // DISPLAY CONSTRUCTOR + + // The display handles the DOM integration, both for input reading + // and content drawing. It holds references to DOM nodes and + // display-related state. + + function Display(place, doc) { + var d = this; + + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) input.style.width = "1000px"; + else input.setAttribute("wrap", "off"); + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) input.style.border = "1px solid black"; + input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false"); + + // Wraps and hides input textarea + d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The fake scrollbar elements. + d.scrollbarH = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); + d.scrollbarV = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = elt("div", null, "CodeMirror-code"); + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure"); + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure"); + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + // Moved around its parent to cover visible view. + d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;"); + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters"); + d.lineGutter = null; + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); + // The element in which the editor lives. + d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV, + d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie_upto7) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + // Needed to hide big blue blinking cursor on Mobile Safari + if (ios) input.style.width = "0px"; + if (!webkit) d.scroller.draggable = true; + // Needed to handle Tab key in KHTML + if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; } + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie_upto7) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = "18px"; + + if (place.appendChild) place.appendChild(d.wrapper); + else place(d.wrapper); + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first; + // Information about the rendered lines. + d.view = []; + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null; + // Empty space (in pixels) above the view + d.viewOffset = 0; + d.lastSizeC = 0; + d.updateLineNumbers = null; + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; + // See readInput and resetInput + d.prevInput = ""; + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false; + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + d.pollingFast = false; + // Self-resetting timeout for the poller + d.poll = new Delayed(); + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + + // Tracks when resetInput has punted to just putting a short + // string into the textarea instead of the full selection. + d.inaccurateSelection = false; + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null; + d.maxLineLength = 0; + d.maxLineChanged = false; + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; + + // True when shift is held down. + d.shift = false; + } + + // STATE UPDATES + + // Used to get the editor into a consistent state again when options change. + + function loadMode(cm) { + cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); + resetModeState(cm); + } + + function resetModeState(cm) { + cm.doc.iter(function(line) { + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + }); + cm.doc.frontier = cm.doc.first; + startWorker(cm, 100); + cm.state.modeGen++; + if (cm.curOp) regChange(cm); + } + + function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap"); + findMaxLine(cm); + } + estimateLineHeights(cm); + regChange(cm); + clearCaches(cm); + setTimeout(function(){updateScrollbars(cm);}, 100); + } + + // Returns a function that estimates the height of a line, to use as + // first approximation until the line becomes visible (and is thus + // properly measurable). + function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + return function(line) { + if (lineIsHidden(cm.doc, line)) return 0; + + var widgetsHeight = 0; + if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; + } + + if (wrapping) + return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; + else + return widgetsHeight + th; + }; + } + + function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm); + doc.iter(function(line) { + var estHeight = est(line); + if (estHeight != line.height) updateLineHeight(line, estHeight); + }); + } + + function keyMapChanged(cm) { + var map = keyMap[cm.options.keyMap], style = map.style; + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + + (style ? " cm-keymap-" + style : ""); + } + + function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + clearCaches(cm); + } + + function guttersChanged(cm) { + updateGutters(cm); + regChange(cm); + setTimeout(function(){alignHorizontally(cm);}, 20); + } + + // Rebuild the gutter elements, ensure the margin to the left of the + // code matches their width. + function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters; + removeChildren(gutters); + for (var i = 0; i < specs.length; ++i) { + var gutterClass = specs[i]; + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt; + gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; + } + } + gutters.style.display = i ? "" : "none"; + updateGutterSpace(cm); + } + + function updateGutterSpace(cm) { + var width = cm.display.gutters.offsetWidth; + cm.display.sizer.style.marginLeft = width + "px"; + cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0; + } + + // Compute the character length of a line, taking into account + // collapsed ranges (see markText) that might hide parts, and join + // other lines onto it. + function lineLength(line) { + if (line.height == 0) return 0; + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true); + cur = found.from.line; + len += found.from.ch - found.to.ch; + } + cur = line; + while (merged = collapsedSpanAtEnd(cur)) { + var found = merged.find(0, true); + len -= cur.text.length - found.from.ch; + cur = found.to.line; + len += cur.text.length - found.to.ch; + } + return len; + } + + // Find the longest line in the document. + function findMaxLine(cm) { + var d = cm.display, doc = cm.doc; + d.maxLine = getLine(doc, doc.first); + d.maxLineLength = lineLength(d.maxLine); + d.maxLineChanged = true; + doc.iter(function(line) { + var len = lineLength(line); + if (len > d.maxLineLength) { + d.maxLineLength = len; + d.maxLine = line; + } + }); + } + + // Make sure the gutters options contains the element + // "CodeMirror-linenumbers" when the lineNumbers option is true. + function setGuttersForLineNumbers(options) { + var found = indexOf(options.gutters, "CodeMirror-linenumbers"); + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0); + options.gutters.splice(found, 1); + } + } + + // SCROLLBARS + + // Prepare DOM reads needed to update the scrollbars. Done in one + // shot to minimize update/measure roundtrips. + function measureForScrollbars(cm) { + var scroll = cm.display.scroller; + return { + clientHeight: scroll.clientHeight, + barHeight: cm.display.scrollbarV.clientHeight, + scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth, + barWidth: cm.display.scrollbarH.clientWidth, + docHeight: Math.round(cm.doc.height + paddingVert(cm.display)) + }; + } + + // Re-synchronize the fake scrollbars with the actual size of the + // content. + function updateScrollbars(cm, measure) { + if (!measure) measure = measureForScrollbars(cm); + var d = cm.display; + var scrollHeight = measure.docHeight + scrollerCutOff; + var needsH = measure.scrollWidth > measure.clientWidth; + var needsV = scrollHeight > measure.clientHeight; + if (needsV) { + d.scrollbarV.style.display = "block"; + d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0"; + // A bug in IE8 can cause this value to be negative, so guard it. + d.scrollbarV.firstChild.style.height = + Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + "px"; + } else { + d.scrollbarV.style.display = ""; + d.scrollbarV.firstChild.style.height = "0"; + } + if (needsH) { + d.scrollbarH.style.display = "block"; + d.scrollbarH.style.right = needsV ? scrollbarWidth(d.measure) + "px" : "0"; + d.scrollbarH.firstChild.style.width = + (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + "px"; + } else { + d.scrollbarH.style.display = ""; + d.scrollbarH.firstChild.style.width = "0"; + } + if (needsH && needsV) { + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = scrollbarWidth(d.measure) + "px"; + } else d.scrollbarFiller.style.display = ""; + if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = scrollbarWidth(d.measure) + "px"; + d.gutterFiller.style.width = d.gutters.offsetWidth + "px"; + } else d.gutterFiller.style.display = ""; + + if (!cm.state.checkedOverlayScrollbar && measure.clientHeight > 0) { + if (scrollbarWidth(d.measure) === 0) { + var w = mac && !mac_geMountainLion ? "12px" : "18px"; + d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = w; + var barMouseDown = function(e) { + if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH) + operation(cm, onMouseDown)(e); + }; + on(d.scrollbarV, "mousedown", barMouseDown); + on(d.scrollbarH, "mousedown", barMouseDown); + } + cm.state.checkedOverlayScrollbar = true; + } + } + + // Compute the lines that are visible in a given viewport (defaults + // the the current scroll position). viewPort may contain top, + // height, and ensure (see op.scrollToPos) properties. + function visibleLines(display, doc, viewPort) { + var top = viewPort && viewPort.top != null ? viewPort.top : display.scroller.scrollTop; + top = Math.floor(top - paddingTop(display)); + var bottom = viewPort && viewPort.bottom != null ? viewPort.bottom : top + display.wrapper.clientHeight; + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewPort && viewPort.ensure) { + var ensureFrom = viewPort.ensure.from.line, ensureTo = viewPort.ensure.to.line; + if (ensureFrom < from) + return {from: ensureFrom, + to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)}; + if (Math.min(ensureTo, doc.lastLine()) >= to) + return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight), + to: ensureTo}; + } + return {from: from, to: to}; + } + + // LINE NUMBERS + + // Re-align line numbers and gutter marks to compensate for + // horizontal scrolling. + function alignHorizontally(cm) { + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) if (!view[i].hidden) { + if (cm.options.fixedGutter && view[i].gutter) + view[i].gutter.style.left = left; + var align = view[i].alignable; + if (align) for (var j = 0; j < align.length; j++) + align[j].style.left = left; + } + if (cm.options.fixedGutter) + display.gutters.style.left = (comp + gutterW) + "px"; + } + + // Used to ensure that the line number gutter is still the right + // size for the current document size. Returns true when an update + // is needed. + function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) return false; + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding); + display.lineNumWidth = display.lineNumInnerWidth + padding; + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; + display.lineGutter.style.width = display.lineNumWidth + "px"; + updateGutterSpace(cm); + return true; + } + return false; + } + + function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)); + } + + // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, + // but using getBoundingClientRect to get a sub-pixel-accurate + // result. + function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; + } + + // DISPLAY DRAWING + + // Updates the display, selection, and scrollbars, using the + // information in display.view to find out which nodes are no longer + // up-to-date. Tries to bail out early when no changes are needed, + // unless forced is true. + // Returns true if an actual update happened, false otherwise. + function updateDisplay(cm, viewPort, forced) { + var oldFrom = cm.display.viewFrom, oldTo = cm.display.viewTo, updated; + var visible = visibleLines(cm.display, cm.doc, viewPort); + for (var first = true;; first = false) { + var oldWidth = cm.display.scroller.clientWidth; + if (!updateDisplayInner(cm, visible, forced)) break; + updated = true; + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + if (cm.display.maxLineChanged && !cm.options.lineWrapping) + adjustContentWidth(cm); + + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + setDocumentHeight(cm, barMeasure); + updateScrollbars(cm, barMeasure); + if (webkit && cm.options.lineWrapping) + checkForWebkitWidthBug(cm, barMeasure); // (Issue #2420) + if (first && cm.options.lineWrapping && oldWidth != cm.display.scroller.clientWidth) { + forced = true; + continue; + } + forced = false; + + // Clip forced viewport to actual scrollable area. + if (viewPort && viewPort.top != null) + viewPort = {top: Math.min(barMeasure.docHeight - scrollerCutOff - barMeasure.clientHeight, viewPort.top)}; + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + visible = visibleLines(cm.display, cm.doc, viewPort); + if (visible.from >= cm.display.viewFrom && visible.to <= cm.display.viewTo) + break; + } + + cm.display.updateLineNumbers = null; + if (updated) { + signalLater(cm, "update", cm); + if (cm.display.viewFrom != oldFrom || cm.display.viewTo != oldTo) + signalLater(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + } + return updated; + } + + // Does the actual updating of the line display. Bails out + // (returning false) when there is nothing to be done and forced is + // false. + function updateDisplayInner(cm, visible, forced) { + var display = cm.display, doc = cm.doc; + if (!display.wrapper.offsetWidth) { + resetView(cm); + return; + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!forced && visible.from >= display.viewFrom && visible.to <= display.viewTo && + countDirtyView(cm) == 0) + return; + + if (maybeUpdateLineNumberWidth(cm)) + resetView(cm); + var dims = getDimensions(cm); + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size; + var from = Math.max(visible.from - cm.options.viewportMargin, doc.first); + var to = Math.min(end, visible.to + cm.options.viewportMargin); + if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); + if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from); + to = visualLineEndNo(cm.doc, to); + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastSizeC != display.wrapper.clientHeight; + adjustView(cm, from, to); + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px"; + + var toUpdate = countDirtyView(cm); + if (!different && toUpdate == 0 && !forced) return; + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var focused = activeElt(); + if (toUpdate > 4) display.lineDiv.style.display = "none"; + patchDisplay(cm, display.updateLineNumbers, dims); + if (toUpdate > 4) display.lineDiv.style.display = ""; + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); + + // Prevent selection and cursors from interfering with the scroll + // width. + removeChildren(display.cursorDiv); + removeChildren(display.selectionDiv); + + if (different) { + display.lastSizeC = display.wrapper.clientHeight; + startWorker(cm, 400); + } + + updateHeightsInViewport(cm); + + return true; + } + + function adjustContentWidth(cm) { + var display = cm.display; + var width = measureChar(cm, display.maxLine, display.maxLine.text.length).left; + display.maxLineChanged = false; + var minWidth = Math.max(0, width + 3); + var maxScrollLeft = Math.max(0, display.sizer.offsetLeft + minWidth + scrollerCutOff - display.scroller.clientWidth); + display.sizer.style.minWidth = minWidth + "px"; + if (maxScrollLeft < cm.doc.scrollLeft) + setScrollLeft(cm, Math.min(display.scroller.scrollLeft, maxScrollLeft), true); + } + + function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight - scrollerCutOff) + "px"; + } + + + function checkForWebkitWidthBug(cm, measure) { + // Work around Webkit bug where it sometimes reserves space for a + // non-existing phantom scrollbar in the scroller (Issue #2420) + if (cm.display.sizer.offsetWidth + cm.display.gutters.offsetWidth < cm.display.scroller.clientWidth - 1) { + cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = "0px"; + cm.display.gutters.style.height = measure.docHeight + "px"; + } + } + + // Read the actual heights of the rendered lines, and update their + // stored heights to match. + function updateHeightsInViewport(cm) { + var display = cm.display; + var prevBottom = display.lineDiv.offsetTop; + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], height; + if (cur.hidden) continue; + if (ie_upto7) { + var bot = cur.node.offsetTop + cur.node.offsetHeight; + height = bot - prevBottom; + prevBottom = bot; + } else { + var box = cur.node.getBoundingClientRect(); + height = box.bottom - box.top; + } + var diff = cur.line.height - height; + if (height < 2) height = textHeight(display); + if (diff > .001 || diff < -.001) { + updateLineHeight(cur.line, height); + updateWidgetHeight(cur.line); + if (cur.rest) for (var j = 0; j < cur.rest.length; j++) + updateWidgetHeight(cur.rest[j]); + } + } + } + + // Read and store the height of line widgets associated with the + // given line. + function updateWidgetHeight(line) { + if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) + line.widgets[i].height = line.widgets[i].node.offsetHeight; + } + + // Do a bulk-read of the DOM positions and sizes needed to draw the + // view, so that we don't interleave reading and writing to the DOM. + function getDimensions(cm) { + var d = cm.display, left = {}, width = {}; + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft; + width[cm.options.gutters[i]] = n.offsetWidth; + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth}; + } + + // Sync the actual display DOM structure with display.view, removing + // nodes for lines that are no longer in view, and creating the ones + // that are not there yet, and updating the ones that are out of + // date. + function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; + + function rm(node) { + var next = node.nextSibling; + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + node.style.display = "none"; + else + node.parentNode.removeChild(node); + return next; + } + + var view = display.view, lineN = display.viewFrom; + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (lineView.hidden) { + } else if (!lineView.node) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims); + container.insertBefore(node, cur); + } else { // Already drawn + while (cur != lineView.node) cur = rm(cur); + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; + updateLineForChanges(cm, lineView, lineN, dims); + } + if (updateNumber) { + removeChildren(lineView.lineNumber); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); + } + cur = lineView.node.nextSibling; + } + lineN += lineView.size; + } + while (cur) cur = rm(cur); + } + + // When an aspect of a line changes, a string is added to + // lineView.changes. This updates the relevant part of the line's + // DOM structure. + function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j]; + if (type == "text") updateLineText(cm, lineView); + else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); + else if (type == "class") updateLineClasses(lineView); + else if (type == "widget") updateLineWidgets(lineView, dims); + } + lineView.changes = null; + } + + // Lines with gutter elements, widgets or a background class need to + // be wrapped, and have the extra elements added to the wrapper div + function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + lineView.text.parentNode.replaceChild(lineView.node, lineView.text); + lineView.node.appendChild(lineView.text); + if (ie_upto7) lineView.node.style.zIndex = 2; + } + return lineView.node; + } + + function updateLineBackground(lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) cls += " CodeMirror-linebackground"; + if (lineView.background) { + if (cls) lineView.background.className = cls; + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } + } else if (cls) { + var wrap = ensureLineWrapped(lineView); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); + } + } + + // Wrapper around buildLineContent which will reuse the structure + // in display.externalMeasured when possible. + function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured; + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null; + lineView.measure = ext.measure; + return ext.built; + } + return buildLineContent(cm, lineView); + } + + // Redraw the line's text. Interacts with the background and text + // classes because the mode may output tokens that influence these + // classes. + function updateLineText(cm, lineView) { + var cls = lineView.text.className; + var built = getLineContent(cm, lineView); + if (lineView.text == lineView.node) lineView.node = built.pre; + lineView.text.parentNode.replaceChild(built.pre, lineView.text); + lineView.text = built.pre; + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass; + lineView.textClass = built.textClass; + updateLineClasses(lineView); + } else if (cls) { + lineView.text.className = cls; + } + } + + function updateLineClasses(lineView) { + updateLineBackground(lineView); + if (lineView.line.wrapClass) + ensureLineWrapped(lineView).className = lineView.line.wrapClass; + else if (lineView.node != lineView.text) + lineView.node.className = ""; + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; + } + + function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter); + lineView.gutter = null; + } + var markers = lineView.line.gutterMarkers; + if (cm.options.lineNumbers || markers) { + var wrap = ensureLineWrapped(lineView); + var gutterWrap = lineView.gutter = + wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "position: absolute; left: " + + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"), + lineView.text); + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + + cm.display.lineNumInnerWidth + "px")); + if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; + if (found) + gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + + dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); + } + } + } + + function updateLineWidgets(lineView, dims) { + if (lineView.alignable) lineView.alignable = null; + for (var node = lineView.node.firstChild, next; node; node = next) { + var next = node.nextSibling; + if (node.className == "CodeMirror-linewidget") + lineView.node.removeChild(node); + } + insertLineWidgets(lineView, dims); + } + + // Build a line's DOM representation from scratch + function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView); + lineView.text = lineView.node = built.pre; + if (built.bgClass) lineView.bgClass = built.bgClass; + if (built.textClass) lineView.textClass = built.textClass; + + updateLineClasses(lineView); + updateLineGutter(cm, lineView, lineN, dims); + insertLineWidgets(lineView, dims); + return lineView.node; + } + + // A lineView may contain multiple logical lines (when merged by + // collapsed spans). The widgets for all of them need to be drawn. + function insertLineWidgets(lineView, dims) { + insertLineWidgetsFor(lineView.line, lineView, dims, true); + if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) + insertLineWidgetsFor(lineView.rest[i], lineView, dims, false); + } + + function insertLineWidgetsFor(line, lineView, dims, allowAbove) { + if (!line.widgets) return; + var wrap = ensureLineWrapped(lineView); + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); + if (!widget.handleMouseEvents) node.ignoreEvents = true; + positionLineWidget(widget, node, lineView, dims); + if (allowAbove && widget.above) + wrap.insertBefore(node, lineView.gutter || lineView.text); + else + wrap.appendChild(node); + signalLater(widget, "redraw"); + } + } + + function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + (lineView.alignable || (lineView.alignable = [])).push(node); + var width = dims.wrapperWidth; + node.style.left = dims.fixedPos + "px"; + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; + } + node.style.width = width + "px"; + } + if (widget.coverGutter) { + node.style.zIndex = 5; + node.style.position = "relative"; + if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; + } + } + + // POSITION OBJECT + + // A Pos instance represents a position within the text. + var Pos = CodeMirror.Pos = function(line, ch) { + if (!(this instanceof Pos)) return new Pos(line, ch); + this.line = line; this.ch = ch; + }; + + // Compare two positions, return 0 if they are the same, a negative + // number when a is less, and a positive number otherwise. + var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; + + function copyPos(x) {return Pos(x.line, x.ch);} + function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } + function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } + + // SELECTION / CURSOR + + // Selection objects are immutable. A new one is created every time + // the selection changes. A selection is one or more non-overlapping + // (and non-touching) ranges, sorted, and an integer that indicates + // which one is the primary selection (the one that's scrolled into + // view, that getCursor returns, etc). + function Selection(ranges, primIndex) { + this.ranges = ranges; + this.primIndex = primIndex; + } + + Selection.prototype = { + primary: function() { return this.ranges[this.primIndex]; }, + equals: function(other) { + if (other == this) return true; + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; + for (var i = 0; i < this.ranges.length; i++) { + var here = this.ranges[i], there = other.ranges[i]; + if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; + } + return true; + }, + deepCopy: function() { + for (var out = [], i = 0; i < this.ranges.length; i++) + out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); + return new Selection(out, this.primIndex); + }, + somethingSelected: function() { + for (var i = 0; i < this.ranges.length; i++) + if (!this.ranges[i].empty()) return true; + return false; + }, + contains: function(pos, end) { + if (!end) end = pos; + for (var i = 0; i < this.ranges.length; i++) { + var range = this.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + return i; + } + return -1; + } + }; + + function Range(anchor, head) { + this.anchor = anchor; this.head = head; + } + + Range.prototype = { + from: function() { return minPos(this.anchor, this.head); }, + to: function() { return maxPos(this.anchor, this.head); }, + empty: function() { + return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; + } + }; + + // Take an unsorted, potentially overlapping set of ranges, and + // build a selection out of it. 'Consumes' ranges array (modifying + // it). + function normalizeSelection(ranges, primIndex) { + var prim = ranges[primIndex]; + ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); + primIndex = indexOf(ranges, prim); + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1]; + if (cmp(prev.to(), cur.from()) >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) --primIndex; + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); + } + } + return new Selection(ranges, primIndex); + } + + function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0); + } + + // Most of the external API clips given positions to make sure they + // actually exist within the document. + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} + function clipPos(doc, pos) { + if (pos.line < doc.first) return Pos(doc.first, 0); + var last = doc.first + doc.size - 1; + if (pos.line > last) return Pos(last, getLine(doc, last).text.length); + return clipToLen(pos, getLine(doc, pos.line).text.length); + } + function clipToLen(pos, linelen) { + var ch = pos.ch; + if (ch == null || ch > linelen) return Pos(pos.line, linelen); + else if (ch < 0) return Pos(pos.line, 0); + else return pos; + } + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} + function clipPosArray(doc, array) { + for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); + return out; + } + + // SELECTION UPDATES + + // The 'scroll' parameter given to many of these indicated whether + // the new cursor position should be scrolled into view after + // modifying the selection. + + // If shift is held or the extend flag is set, extends a range to + // include a given position (and optionally a second position). + // Otherwise, simply returns the range between the given positions. + // Used for cursor motion and such. + function extendRange(doc, range, head, other) { + if (doc.cm && doc.cm.display.shift || doc.extend) { + var anchor = range.anchor; + if (other) { + var posBefore = cmp(head, anchor) < 0; + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head; + head = other; + } else if (posBefore != (cmp(head, other) < 0)) { + head = other; + } + } + return new Range(anchor, head); + } else { + return new Range(other || head, head); + } + } + + // Extend the primary selection range, discard the rest. + function extendSelection(doc, head, other, options) { + setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); + } + + // Extend all selections (pos is an array of selections with length + // equal the number of selections) + function extendSelections(doc, heads, options) { + for (var out = [], i = 0; i < doc.sel.ranges.length; i++) + out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); + var newSel = normalizeSelection(out, doc.sel.primIndex); + setSelection(doc, newSel, options); + } + + // Updates a single range in the selection. + function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0); + ranges[i] = range; + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); + } + + // Reset the selection to a single range. + function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options); + } + + // Give beforeSelectionChange handlers a change to influence a + // selection update. + function filterSelectionChange(doc, sel) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + this.ranges = []; + for (var i = 0; i < ranges.length; i++) + this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); + } + }; + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); + if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); + else return sel; + } + + function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done); + if (last && last.ranges) { + done[done.length - 1] = sel; + setSelectionNoUndo(doc, sel, options); + } else { + setSelection(doc, sel, options); + } + } + + // Set a new selection. + function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); + } + + function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + sel = filterSelectionChange(doc, sel); + + var bias = cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1; + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); + + if (!(options && options.scroll === false) && doc.cm) + ensureCursorVisible(doc.cm); + } + + function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) return; + + doc.sel = sel; + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; + signalCursorActivity(doc.cm); + } + signalLater(doc, "cursorActivity", doc); + } + + // Verify that the selection does not partially select any atomic + // marked ranges. + function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); + } + + // Return a selection that does not partially select any atomic + // ranges. + function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear); + var newHead = skipAtomic(doc, range.head, bias, mayClear); + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) out = sel.ranges.slice(0, i); + out[i] = new Range(newAnchor, newHead); + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel; + } + + // Ensure a given position is not inside an atomic range. + function skipAtomic(doc, pos, bias, mayClear) { + var flipped = false, curPos = pos; + var dir = bias || 1; + doc.cantEdit = false; + search: for (;;) { + var line = getLine(doc, curPos.line); + if (line.markedSpans) { + for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) break; + else {--i; continue;} + } + } + if (!m.atomic) continue; + var newPos = m.find(dir < 0 ? -1 : 1); + if (cmp(newPos, curPos) == 0) { + newPos.ch += dir; + if (newPos.ch < 0) { + if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1)); + else newPos = null; + } else if (newPos.ch > line.text.length) { + if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0); + else newPos = null; + } + if (!newPos) { + if (flipped) { + // Driven in a corner -- no valid cursor position found at all + // -- try again *with* clearing, if we didn't already + if (!mayClear) return skipAtomic(doc, pos, bias, true); + // Otherwise, turn off editing until further notice, and return the start of the doc + doc.cantEdit = true; + return Pos(doc.first, 0); + } + flipped = true; newPos = pos; dir = -dir; + } + } + curPos = newPos; + continue search; + } + } + } + return curPos; + } + } + + // SELECTION DRAWING + + // Redraw the selection and/or cursor + function updateSelection(cm) { + var display = cm.display, doc = cm.doc; + var curFragment = document.createDocumentFragment(); + var selFragment = document.createDocumentFragment(); + + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + var collapsed = range.empty(); + if (collapsed || cm.options.showCursorWhenSelecting) + drawSelectionCursor(cm, range, curFragment); + if (!collapsed) + drawSelectionRange(cm, range, selFragment); + } + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + var top = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + var left = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + display.inputDiv.style.top = top + "px"; + display.inputDiv.style.left = left + "px"; + } + + removeChildrenAndAdd(display.cursorDiv, curFragment); + removeChildrenAndAdd(display.selectionDiv, selFragment); + } + + // Draws a cursor for the given range + function drawSelectionCursor(cm, range, output) { + var pos = cursorCoords(cm, range.head, "div"); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; + } + } + + // Draws the given range as a highlighted selection + function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc; + var fragment = document.createDocumentFragment(); + var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right; + + function add(left, top, width, bottom) { + if (top < 0) top = 0; + top = Math.round(top); + bottom = Math.round(bottom); + fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + + "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + + "px; height: " + (bottom - top) + "px")); + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line); + var lineLen = lineObj.text.length; + var start, end; + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias); + } + + iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { + var leftPos = coords(from, "left"), rightPos, left, right; + if (from == to) { + rightPos = leftPos; + left = right = leftPos.left; + } else { + rightPos = coords(to - 1, "right"); + if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } + left = leftPos.left; + right = rightPos.right; + } + if (fromArg == null && from == 0) left = leftSide; + if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part + add(left, leftPos.top, null, leftPos.bottom); + left = leftSide; + if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); + } + if (toArg == null && to == lineLen) right = rightSide; + if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) + start = leftPos; + if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) + end = rightPos; + if (left < leftSide + 1) left = leftSide; + add(left, rightPos.top, right - left, rightPos.bottom); + }); + return {start: start, end: end}; + } + + var sFrom = range.from(), sTo = range.to(); + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch); + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); + var singleVLine = visualLine(fromLine) == visualLine(toLine); + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); + } + } + if (leftEnd.bottom < rightStart.top) + add(leftSide, leftEnd.bottom, null, rightStart.top); + } + + output.appendChild(fragment); + } + + // Cursor-blinking + function restartBlink(cm) { + if (!cm.state.focused) return; + var display = cm.display; + clearInterval(display.blinker); + var on = true; + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + display.blinker = setInterval(function() { + display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); + } + + // HIGHLIGHT WORKER + + function startWorker(cm, time) { + if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) + cm.state.highlight.set(time, bind(highlightWorker, cm)); + } + + function highlightWorker(cm) { + var doc = cm.doc; + if (doc.frontier < doc.first) doc.frontier = doc.first; + if (doc.frontier >= cm.display.viewTo) return; + var end = +new Date + cm.options.workTime; + var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); + + runInOp(cm, function() { + doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { + if (doc.frontier >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles; + var highlighted = highlightLine(cm, line, state, true); + line.styles = highlighted.styles; + if (highlighted.classes) line.styleClasses = highlighted.classes; + else if (line.styleClasses) line.styleClasses = null; + var ischange = !oldStyles || oldStyles.length != line.styles.length; + for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; + if (ischange) regLineChange(cm, doc.frontier, "text"); + line.stateAfter = copyState(doc.mode, state); + } else { + processLine(cm, line.text, state); + line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; + } + ++doc.frontier; + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true; + } + }); + }); + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc; + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); + for (var search = n; search > lim; --search) { + if (search <= doc.first) return doc.first; + var line = getLine(doc, search - 1); + if (line.stateAfter && (!precise || search <= doc.frontier)) return search; + var indented = countColumn(line.text, null, cm.options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline; + } + + function getStateBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) return true; + var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; + if (!state) state = startState(doc.mode); + else state = copyState(doc.mode, state); + doc.iter(pos, n, function(line) { + processLine(cm, line.text, state); + var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; + line.stateAfter = save ? copyState(doc.mode, state) : null; + ++pos; + }); + if (precise) doc.frontier = pos; + return state; + } + + // POSITION MEASUREMENT + + function paddingTop(display) {return display.lineSpace.offsetTop;} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} + function paddingH(display) { + if (display.cachedPaddingH) return display.cachedPaddingH; + var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; + return data; + } + + // Ensure the lineView.wrapping.heights array is populated. This is + // an array of bottom offsets for the lines that make up a drawn + // line. When lineWrapping is on, there might be more than one + // height. + function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping; + var curWidth = wrapping && cm.display.scroller.clientWidth; + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; + if (wrapping) { + lineView.measure.width = curWidth; + var rects = lineView.text.firstChild.getClientRects(); + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + heights.push((cur.bottom + next.top) / 2 - rect.top); + } + } + heights.push(rect.bottom - rect.top); + } + } + + // Find a line map (mapping character offsets to text nodes) and a + // measurement cache for the given line number. (A line view might + // contain multiple lines when collapsed ranges are present.) + function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + return {map: lineView.measure.map, cache: lineView.measure.cache}; + for (var i = 0; i < lineView.rest.length; i++) + if (lineView.rest[i] == line) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; + for (var i = 0; i < lineView.rest.length; i++) + if (lineNo(lineView.rest[i]) > lineN) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; + } + + // Render a line into the hidden node display.externalMeasured. Used + // when measurement is needed for a line that's not in the viewport. + function updateExternalMeasurement(cm, line) { + line = visualLine(line); + var lineN = lineNo(line); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); + view.lineN = lineN; + var built = view.built = buildLineContent(cm, view); + view.text = built.pre; + removeChildrenAndAdd(cm.display.lineMeasure, built.pre); + return view; + } + + // Get a {top, bottom, left, right} box (in line-local coordinates) + // for a given character. + function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); + } + + // Find a line view that corresponds to the given line number. + function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + return cm.display.view[findViewIndex(cm, lineN)]; + var ext = cm.display.externalMeasured; + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + return ext; + } + + // Measurement can be split in two steps, the set-up work that + // applies to the whole line, and the measurement of the actual + // character. Functions like coordsChar, that need to do a lot of + // measurements in a row, can thus ensure that the set-up work is + // only done once. + function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line); + var view = findViewForLine(cm, lineN); + if (view && !view.text) + view = null; + else if (view && view.changes) + updateLineForChanges(cm, view, lineN, getDimensions(cm)); + if (!view) + view = updateExternalMeasurement(cm, line); + + var info = mapFromLineView(view, line, lineN); + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + }; + } + + // Given a prepared measurement object, measures the position of an + // actual character (or fetches it from the cache). + function measureCharPrepared(cm, prepared, ch, bias) { + if (prepared.before) ch = -1; + var key = ch + (bias || ""), found; + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key]; + } else { + if (!prepared.rect) + prepared.rect = prepared.view.text.getBoundingClientRect(); + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect); + prepared.hasHeights = true; + } + found = measureCharInner(cm, prepared, ch, bias); + if (!found.bogus) prepared.cache[key] = found; + } + return {left: found.left, right: found.right, top: found.top, bottom: found.bottom}; + } + + var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; + + function measureCharInner(cm, prepared, ch, bias) { + var map = prepared.map; + + var node, start, end, collapse; + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map.length; i += 3) { + var mStart = map[i], mEnd = map[i + 1]; + if (ch < mStart) { + start = 0; end = 1; + collapse = "left"; + } else if (ch < mEnd) { + start = ch - mStart; + end = start + 1; + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart; + start = end - 1; + if (ch >= mEnd) collapse = "right"; + } + if (start != null) { + node = map[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + collapse = bias; + if (bias == "left" && start == 0) + while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2]; + collapse = "left"; + } + if (bias == "right" && start == mEnd - mStart) + while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2]; + collapse = "right"; + } + break; + } + } + + var rect; + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start; + while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end; + if (ie_upto8 && start == 0 && end == mEnd - mStart) { + rect = node.parentNode.getBoundingClientRect(); + } else if (ie && cm.options.lineWrapping) { + var rects = range(node, start, end).getClientRects(); + if (rects.length) + rect = rects[bias == "right" ? rects.length - 1 : 0]; + else + rect = nullRect; + } else { + rect = range(node, start, end).getBoundingClientRect(); + } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) collapse = bias = "right"; + var rects; + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + rect = rects[bias == "right" ? rects.length - 1 : 0]; + else + rect = node.getBoundingClientRect(); + } + if (ie_upto8 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0]; + if (rSpan) + rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; + else + rect = nullRect; + } + + var top, bot = (rect.bottom + rect.top) / 2 - prepared.rect.top; + var heights = prepared.view.measure.heights; + for (var i = 0; i < heights.length - 1; i++) + if (bot < heights[i]) break; + top = i ? heights[i - 1] : 0; bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) result.bogus = true; + return result; + } + + function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {}; + lineView.measure.heights = null; + if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) + lineView.measure.caches[i] = {}; + } + } + + function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null; + removeChildren(cm.display.lineMeasure); + for (var i = 0; i < cm.display.view.length; i++) + clearLineMeasurementCacheFor(cm.display.view[i]); + } + + function clearCaches(cm) { + clearLineMeasurementCache(cm); + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; + cm.display.lineNumChars = null; + } + + function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } + function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } + + // Converts a {top, bottom, left, right} box from line-local + // coordinates into another coordinate system. Context may be one of + // "line", "div" (display.lineDiv), "local"/null (editor), or "page". + function intoCoordSystem(cm, lineObj, rect, context) { + if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { + var size = widgetHeight(lineObj.widgets[i]); + rect.top += size; rect.bottom += size; + } + if (context == "line") return rect; + if (!context) context = "local"; + var yOff = heightAtLine(lineObj); + if (context == "local") yOff += paddingTop(cm.display); + else yOff -= cm.display.viewOffset; + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect(); + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); + rect.left += xOff; rect.right += xOff; + } + rect.top += yOff; rect.bottom += yOff; + return rect; + } + + // Coverts a box from "div" coords to another coordinate system. + // Context may be "window", "page", "div", or "local"/null. + function fromCoordSystem(cm, coords, context) { + if (context == "div") return coords; + var left = coords.left, top = coords.top; + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX(); + top -= pageScrollY(); + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect(); + left += localBox.left; + top += localBox.top; + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; + } + + function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) lineObj = getLine(cm.doc, pos.line); + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); + } + + // Returns a box for a given cursor position, which may have an + // 'other' property containing the position of the secondary cursor + // on a bidi boundary. + function cursorCoords(cm, pos, context, lineObj, preparedMeasure) { + lineObj = lineObj || getLine(cm.doc, pos.line); + if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left"); + if (right) m.left = m.right; else m.right = m.left; + return intoCoordSystem(cm, lineObj, m, context); + } + function getBidi(ch, partPos) { + var part = order[partPos], right = part.level % 2; + if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { + part = order[--partPos]; + ch = bidiRight(part) - (part.level % 2 ? 0 : 1); + right = true; + } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { + part = order[++partPos]; + ch = bidiLeft(part) - part.level % 2; + right = false; + } + if (right && ch == part.to && ch > part.from) return get(ch - 1); + return get(ch, right); + } + var order = getOrder(lineObj), ch = pos.ch; + if (!order) return get(ch); + var partPos = getBidiPartAt(order, ch); + var val = getBidi(ch, partPos); + if (bidiOther != null) val.other = getBidi(ch, bidiOther); + return val; + } + + // Used to cheaply estimate the coordinates for a position. Used for + // intermediate scroll updates. + function estimateCoords(cm, pos) { + var left = 0, pos = clipPos(cm.doc, pos); + if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; + var lineObj = getLine(cm.doc, pos.line); + var top = heightAtLine(lineObj) + paddingTop(cm.display); + return {left: left, right: left, top: top, bottom: top + lineObj.height}; + } + + // Positions returned by coordsChar contain some extra information. + // xRel is the relative x position of the input coordinates compared + // to the found position (so xRel > 0 means the coordinates are to + // the right of the character position, for example). When outside + // is true, that means the coordinates lie outside the line's + // vertical range. + function PosWithInfo(line, ch, outside, xRel) { + var pos = Pos(line, ch); + pos.xRel = xRel; + if (outside) pos.outside = true; + return pos; + } + + // Compute the character position closest to the given coordinates. + // Input must be lineSpace-local ("div" coordinate system). + function coordsChar(cm, x, y) { + var doc = cm.doc; + y += cm.display.viewOffset; + if (y < 0) return PosWithInfo(doc.first, 0, true, -1); + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); + if (x < 0) x = 0; + + var lineObj = getLine(doc, lineN); + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y); + var merged = collapsedSpanAtEnd(lineObj); + var mergedPos = merged && merged.find(0, true); + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + lineN = lineNo(lineObj = mergedPos.to.line); + else + return found; + } + } + + function coordsCharInner(cm, lineObj, lineNo, x, y) { + var innerOff = y - heightAtLine(lineObj); + var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; + var preparedMeasure = prepareMeasureForLine(cm, lineObj); + + function getX(ch) { + var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); + wrongLine = true; + if (innerOff > sp.bottom) return sp.left - adjust; + else if (innerOff < sp.top) return sp.left + adjust; + else wrongLine = false; + return sp.left; + } + + var bidi = getOrder(lineObj), dist = lineObj.text.length; + var from = lineLeft(lineObj), to = lineRight(lineObj); + var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; + + if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); + // Do a binary search between these bounds. + for (;;) { + if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { + var ch = x < fromX || x - fromX <= toX - x ? from : to; + var xDiff = x - (ch == from ? fromX : toX); + while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; + var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, + xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); + return pos; + } + var step = Math.ceil(dist / 2), middle = from + step; + if (bidi) { + middle = from; + for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); + } + var middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} + else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} + } + } + + var measureText; + // Compute the default text height. + function textHeight(display) { + if (display.cachedTextHeight != null) return display.cachedTextHeight; + if (measureText == null) { + measureText = elt("pre"); + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); + } + measureText.appendChild(document.createTextNode("x")); + } + removeChildrenAndAdd(display.measure, measureText); + var height = measureText.offsetHeight / 50; + if (height > 3) display.cachedTextHeight = height; + removeChildren(display.measure); + return height || 1; + } + + // Compute the default character width. + function charWidth(display) { + if (display.cachedCharWidth != null) return display.cachedCharWidth; + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor]); + removeChildrenAndAdd(display.measure, pre); + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) display.cachedCharWidth = width; + return width || 10; + } + + // OPERATIONS + + // Operations are used to wrap a series of changes to the editor + // state in such a way that each change won't have to update the + // cursor and display (which would be awkward, slow, and + // error-prone). Instead, display updates are batched and then all + // combined and executed at once. + + var nextOpId = 0; + // Start a new operation. + function startOperation(cm) { + cm.curOp = { + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + id: ++nextOpId // Unique ID + }; + if (!delayedCallbackDepth++) delayedCallbacks = []; + } + + // Finish an operation, updating the display and signalling delayed events + function endOperation(cm) { + var op = cm.curOp, doc = cm.doc, display = cm.display; + cm.curOp = null; + + if (op.updateMaxLine) findMaxLine(cm); + + // If it looks like an update might be needed, call updateDisplay + if (op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping) { + var updated = updateDisplay(cm, {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); + if (cm.display.scroller.offsetHeight) cm.doc.scrollTop = cm.display.scroller.scrollTop; + } + // If no update was run, but the selection changed, redraw that. + if (!updated && op.selectionChanged) updateSelection(cm); + if (!updated && op.startHeight != cm.doc.height) updateScrollbars(cm); + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null && display.scroller.scrollTop != op.scrollTop) { + var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); + display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top; + } + if (op.scrollLeft != null && display.scroller.scrollLeft != op.scrollLeft) { + var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); + display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left; + alignHorizontally(cm); + } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var coords = scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from), + clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin); + if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); + } + + if (op.selectionChanged) restartBlink(cm); + + if (cm.state.focused && op.updateInput) + resetInput(cm, op.typing); + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) for (var i = 0; i < hidden.length; ++i) + if (!hidden[i].lines.length) signal(hidden[i], "hide"); + if (unhidden) for (var i = 0; i < unhidden.length; ++i) + if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); + + var delayed; + if (!--delayedCallbackDepth) { + delayed = delayedCallbacks; + delayedCallbacks = null; + } + // Fire change events, and delayed event handlers + if (op.changeObjs) + signal(cm, "changes", cm, op.changeObjs); + if (delayed) for (var i = 0; i < delayed.length; ++i) delayed[i](); + if (op.cursorActivityHandlers) + for (var i = 0; i < op.cursorActivityHandlers.length; i++) + op.cursorActivityHandlers[i](cm); + } + + // Run the given function in an operation + function runInOp(cm, f) { + if (cm.curOp) return f(); + startOperation(cm); + try { return f(); } + finally { endOperation(cm); } + } + // Wraps a function in an operation. Returns the wrapped function. + function operation(cm, f) { + return function() { + if (cm.curOp) return f.apply(cm, arguments); + startOperation(cm); + try { return f.apply(cm, arguments); } + finally { endOperation(cm); } + }; + } + // Used to add methods to editor and doc instances, wrapping them in + // operations. + function methodOp(f) { + return function() { + if (this.curOp) return f.apply(this, arguments); + startOperation(this); + try { return f.apply(this, arguments); } + finally { endOperation(this); } + }; + } + function docMethodOp(f) { + return function() { + var cm = this.cm; + if (!cm || cm.curOp) return f.apply(this, arguments); + startOperation(cm); + try { return f.apply(this, arguments); } + finally { endOperation(cm); } + }; + } + + // VIEW TRACKING + + // These objects are used to represent the visible (currently drawn) + // part of the document. A LineView may correspond to multiple + // logical lines, if those are connected by collapsed ranges. + function LineView(doc, line, lineN) { + // The starting line + this.line = line; + // Continuing lines, if any + this.rest = visualLineContinued(line); + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; + this.node = this.text = null; + this.hidden = lineIsHidden(doc, line); + } + + // Create a range of LineView objects for the given lines. + function buildViewArray(cm, from, to) { + var array = [], nextPos; + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); + nextPos = pos + view.size; + array.push(view); + } + return array; + } + + // Updates the display.view data structure for a given change to the + // document. From and to are in pre-change coordinates. Lendiff is + // the amount of lines added or subtracted by the change. This is + // used for changes that span multiple lines, or change the way + // lines are divided into visual lines. regLineChange (below) + // registers single-line changes. + function regChange(cm, from, to, lendiff) { + if (from == null) from = cm.doc.first; + if (to == null) to = cm.doc.first + cm.doc.size; + if (!lendiff) lendiff = 0; + + var display = cm.display; + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + display.updateLineNumbers = from; + + cm.curOp.viewChanged = true; + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + resetView(cm); + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm); + } else { + display.viewFrom += lendiff; + display.viewTo += lendiff; + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm); + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cut) { + display.view = display.view.slice(cut.index); + display.viewFrom = cut.lineN; + display.viewTo += lendiff; + } else { + resetView(cm); + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut = viewCuttingPoint(cm, from, from, -1); + if (cut) { + display.view = display.view.slice(0, cut.index); + display.viewTo = cut.lineN; + } else { + resetView(cm); + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1); + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)); + display.viewTo += lendiff; + } else { + resetView(cm); + } + } + + var ext = display.externalMeasured; + if (ext) { + if (to < ext.lineN) + ext.lineN += lendiff; + else if (from < ext.lineN + ext.size) + display.externalMeasured = null; + } + } + + // Register a change to a single line. Type must be one of "text", + // "gutter", "class", "widget" + function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true; + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + display.externalMeasured = null; + + if (line < display.viewFrom || line >= display.viewTo) return; + var lineView = display.view[findViewIndex(cm, line)]; + if (lineView.node == null) return; + var arr = lineView.changes || (lineView.changes = []); + if (indexOf(arr, type) == -1) arr.push(type); + } + + // Clear the view. + function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first; + cm.display.view = []; + cm.display.viewOffset = 0; + } + + // Find the view element corresponding to a given line. Return null + // when the line isn't visible. + function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) return null; + n -= cm.display.viewFrom; + if (n < 0) return null; + var view = cm.display.view; + for (var i = 0; i < view.length; i++) { + n -= view[i].size; + if (n < 0) return i; + } + } + + function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans) return {index: index, lineN: newN}; + for (var i = 0, n = cm.display.viewFrom; i < index; i++) + n += view[i].size; + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) return null; + diff = (n + view[index].size) - oldN; + index++; + } else { + diff = n - oldN; + } + oldN += diff; newN += diff; + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) return null; + newN += dir * view[index - (dir < 0 ? 1 : 0)].size; + index += dir; + } + return {index: index, lineN: newN}; + } + + // Force the view to cover a given range, adding empty view element + // or clipping off existing ones as needed. + function adjustView(cm, from, to) { + var display = cm.display, view = display.view; + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to); + display.viewFrom = from; + } else { + if (display.viewFrom > from) + display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); + else if (display.viewFrom < from) + display.view = display.view.slice(findViewIndex(cm, from)); + display.viewFrom = from; + if (display.viewTo < to) + display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); + else if (display.viewTo > to) + display.view = display.view.slice(0, findViewIndex(cm, to)); + } + display.viewTo = to; + } + + // Count the number of lines in the view whose DOM representation is + // out of date (or nonexistent). + function countDirtyView(cm) { + var view = cm.display.view, dirty = 0; + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; + } + return dirty; + } + + // INPUT HANDLING + + // Poll for input changes, using the normal rate of polling. This + // runs as long as the editor is focused. + function slowPoll(cm) { + if (cm.display.pollingFast) return; + cm.display.poll.set(cm.options.pollInterval, function() { + readInput(cm); + if (cm.state.focused) slowPoll(cm); + }); + } + + // When an event has just come in that is likely to add or change + // something in the input textarea, we poll faster, to ensure that + // the change appears on the screen quickly. + function fastPoll(cm) { + var missed = false; + cm.display.pollingFast = true; + function p() { + var changed = readInput(cm); + if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);} + else {cm.display.pollingFast = false; slowPoll(cm);} + } + cm.display.poll.set(20, p); + } + + // Read input from the textarea, and update the document to match. + // When something is selected, it is present in the textarea, and + // selected (unless it is huge, in which case a placeholder is + // used). When nothing is selected, the cursor sits after previously + // seen text (can be empty), which is stored in prevInput (we must + // not reset the textarea when typing, because that breaks IME). + function readInput(cm) { + var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc; + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (!cm.state.focused || (hasSelection(input) && !prevInput) || isReadOnly(cm) || cm.options.disableInput) + return false; + // See paste handler for more on the fakedLastChar kludge + if (cm.state.pasteIncoming && cm.state.fakedLastChar) { + input.value = input.value.substring(0, input.value.length - 1); + cm.state.fakedLastChar = false; + } + var text = input.value; + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) return false; + // Work around nonsensical selection resetting in IE9/10 + if (ie && !ie_upto8 && cm.display.inputHasSelection === text) { + resetInput(cm); + return false; + } + + var withOp = !cm.curOp; + if (withOp) startOperation(cm); + cm.display.shift = false; + + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; + var inserted = text.slice(same), textLines = splitLines(inserted); + + // When pasing N lines into N selections, insert one line per selection + var multiPaste = cm.state.pasteIncoming && textLines.length > 1 && doc.sel.ranges.length == textLines.length; + + // Normal behavior is to insert the new text into every selection + for (var i = doc.sel.ranges.length - 1; i >= 0; i--) { + var range = doc.sel.ranges[i]; + var from = range.from(), to = range.to(); + // Handle deletion + if (same < prevInput.length) + from = Pos(from.line, from.ch - (prevInput.length - same)); + // Handle overwrite + else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming) + to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); + var updateInput = cm.curOp.updateInput; + var changeEvent = {from: from, to: to, text: multiPaste ? [textLines[i]] : textLines, + origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"}; + makeChange(cm.doc, changeEvent); + signalLater(cm, "inputRead", cm, changeEvent); + // When an 'electric' character is inserted, immediately trigger a reindent + if (inserted && !cm.state.pasteIncoming && cm.options.electricChars && + cm.options.smartIndent && range.head.ch < 100 && + (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) { + var mode = cm.getModeAt(range.head); + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indentLine(cm, range.head.line, "smart"); + break; + } + } else if (mode.electricInput) { + var end = changeEnd(changeEvent); + if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch))) + indentLine(cm, range.head.line, "smart"); + } + } + } + ensureCursorVisible(cm); + cm.curOp.updateInput = updateInput; + cm.curOp.typing = true; + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = ""; + else cm.display.prevInput = text; + if (withOp) endOperation(cm); + cm.state.pasteIncoming = cm.state.cutIncoming = false; + return true; + } + + // Reset the input to correspond to the selection (or to be empty, + // when not typing and nothing is selected) + function resetInput(cm, typing) { + var minimal, selected, doc = cm.doc; + if (cm.somethingSelected()) { + cm.display.prevInput = ""; + var range = doc.sel.primary(); + minimal = hasCopyEvent && + (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); + var content = minimal ? "-" : selected || cm.getSelection(); + cm.display.input.value = content; + if (cm.state.focused) selectInput(cm.display.input); + if (ie && !ie_upto8) cm.display.inputHasSelection = content; + } else if (!typing) { + cm.display.prevInput = cm.display.input.value = ""; + if (ie && !ie_upto8) cm.display.inputHasSelection = null; + } + cm.display.inaccurateSelection = minimal; + } + + function focusInput(cm) { + if (cm.options.readOnly != "nocursor" && (!mobile || activeElt() != cm.display.input)) + cm.display.input.focus(); + } + + function ensureFocus(cm) { + if (!cm.state.focused) { focusInput(cm); onFocus(cm); } + } + + function isReadOnly(cm) { + return cm.options.readOnly || cm.doc.cantEdit; + } + + // EVENT HANDLERS + + // Attach the necessary event handlers when initializing the editor + function registerEventHandlers(cm) { + var d = cm.display; + on(d.scroller, "mousedown", operation(cm, onMouseDown)); + // Older IE's will not fire a second mousedown for a double click + if (ie_upto10) + on(d.scroller, "dblclick", operation(cm, function(e) { + if (signalDOMEvent(cm, e)) return; + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; + e_preventDefault(e); + var word = findWordAt(cm.doc, pos); + extendSelection(cm.doc, word.anchor, word.head); + })); + else + on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); + // Prevent normal selection in the editor (we handle our own) + on(d.lineSpace, "selectstart", function(e) { + if (!eventInWidget(d, e)) e_preventDefault(e); + }); + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function() { + if (d.scroller.clientHeight) { + setScrollTop(cm, d.scroller.scrollTop); + setScrollLeft(cm, d.scroller.scrollLeft, true); + signal(cm, "scroll", cm); + } + }); + on(d.scrollbarV, "scroll", function() { + if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop); + }); + on(d.scrollbarH, "scroll", function() { + if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft); + }); + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); + on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); + + // Prevent clicks in the scrollbars from killing focus + function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); } + on(d.scrollbarH, "mousedown", reFocus); + on(d.scrollbarV, "mousedown", reFocus); + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); + + // When the window resizes, we need to refresh active editors. + var resizeTimer; + function onResize() { + if (resizeTimer == null) resizeTimer = setTimeout(function() { + resizeTimer = null; + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = knownScrollbarWidth = null; + cm.setSize(); + }, 100); + } + on(window, "resize", onResize); + // The above handler holds on to the editor and its data + // structures. Here we poll to unregister it when the editor is no + // longer in the document, so that it can be garbage-collected. + function unregister() { + if (contains(document.body, d.wrapper)) setTimeout(unregister, 5000); + else off(window, "resize", onResize); + } + setTimeout(unregister, 5000); + + on(d.input, "keyup", operation(cm, onKeyUp)); + on(d.input, "input", function() { + if (ie && !ie_upto8 && cm.display.inputHasSelection) cm.display.inputHasSelection = null; + fastPoll(cm); + }); + on(d.input, "keydown", operation(cm, onKeyDown)); + on(d.input, "keypress", operation(cm, onKeyPress)); + on(d.input, "focus", bind(onFocus, cm)); + on(d.input, "blur", bind(onBlur, cm)); + + function drag_(e) { + if (!signalDOMEvent(cm, e)) e_stop(e); + } + if (cm.options.dragDrop) { + on(d.scroller, "dragstart", function(e){onDragStart(cm, e);}); + on(d.scroller, "dragenter", drag_); + on(d.scroller, "dragover", drag_); + on(d.scroller, "drop", operation(cm, onDrop)); + } + on(d.scroller, "paste", function(e) { + if (eventInWidget(d, e)) return; + cm.state.pasteIncoming = true; + focusInput(cm); + fastPoll(cm); + }); + on(d.input, "paste", function() { + // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206 + // Add a char to the end of textarea before paste occur so that + // selection doesn't span to the end of textarea. + if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) { + var start = d.input.selectionStart, end = d.input.selectionEnd; + d.input.value += "$"; + d.input.selectionStart = start; + d.input.selectionEnd = end; + cm.state.fakedLastChar = true; + } + cm.state.pasteIncoming = true; + fastPoll(cm); + }); + + function prepareCopyCut(e) { + if (cm.somethingSelected()) { + if (d.inaccurateSelection) { + d.prevInput = ""; + d.inaccurateSelection = false; + d.input.value = cm.getSelection(); + selectInput(d.input); + } + } else { + var text = "", ranges = []; + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; + ranges.push(lineRange); + text += cm.getRange(lineRange.anchor, lineRange.head); + } + if (e.type == "cut") { + cm.setSelections(ranges, null, sel_dontScroll); + } else { + d.prevInput = ""; + d.input.value = text; + selectInput(d.input); + } + } + if (e.type == "cut") cm.state.cutIncoming = true; + } + on(d.input, "cut", prepareCopyCut); + on(d.input, "copy", prepareCopyCut); + + // Needed to handle Tab key in KHTML + if (khtml) on(d.sizer, "mouseup", function() { + if (activeElt() == d.input) d.input.blur(); + focusInput(cm); + }); + } + + // MOUSE EVENTS + + // Return true when the given mouse event happened in a widget + function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true; + } + } + + // Given a mouse event, find the corresponding position. If liberal + // is false, it checks whether a gutter or scrollbar was clicked, + // and returns null if it was. forRect is used by rectangular + // selections, and tries to estimate a character position even for + // coordinates beyond the right of the text. + function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display; + if (!liberal) { + var target = e_target(e); + if (target == display.scrollbarH || target == display.scrollbarV || + target == display.scrollbarFiller || target == display.gutterFiller) return null; + } + var x, y, space = display.lineSpace.getBoundingClientRect(); + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e) { return null; } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords; + } + + // A mouse down can be a single click, double click, triple click, + // start of selection drag, start of text drag, new cursor + // (ctrl-click), rectangle drag (alt-drag), or xwin + // middle-click-paste. Or it might be a click on something we should + // not interfere with, such as a scrollbar or widget. + function onMouseDown(e) { + if (signalDOMEvent(this, e)) return; + var cm = this, display = cm.display; + display.shift = e.shiftKey; + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false; + setTimeout(function(){display.scroller.draggable = true;}, 100); + } + return; + } + if (clickInGutter(cm, e)) return; + var start = posFromMouse(cm, e); + window.focus(); + + switch (e_button(e)) { + case 1: + if (start) + leftButtonDown(cm, e, start); + else if (e_target(e) == display.scroller) + e_preventDefault(e); + break; + case 2: + if (webkit) cm.state.lastMiddleDown = +new Date; + if (start) extendSelection(cm.doc, start); + setTimeout(bind(focusInput, cm), 20); + e_preventDefault(e); + break; + case 3: + if (captureRightClick) onContextMenu(cm, e); + break; + } + } + + var lastClick, lastDoubleClick; + function leftButtonDown(cm, e, start) { + setTimeout(bind(ensureFocus, cm), 0); + + var now = +new Date, type; + if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { + type = "triple"; + } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { + type = "double"; + lastDoubleClick = {time: now, pos: start}; + } else { + type = "single"; + lastClick = {time: now, pos: start}; + } + + var sel = cm.doc.sel, addNew = mac ? e.metaKey : e.ctrlKey; + if (cm.options.dragDrop && dragAndDrop && !addNew && !isReadOnly(cm) && + type == "single" && sel.contains(start) > -1 && sel.somethingSelected()) + leftButtonStartDrag(cm, e, start); + else + leftButtonSelect(cm, e, start, type, addNew); + } + + // Start a text drag. When it ends, see if any dragging actually + // happen, and treat as a click if it didn't. + function leftButtonStartDrag(cm, e, start) { + var display = cm.display; + var dragEnd = operation(cm, function(e2) { + if (webkit) display.scroller.draggable = false; + cm.state.draggingText = false; + off(document, "mouseup", dragEnd); + off(display.scroller, "drop", dragEnd); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + extendSelection(cm.doc, start); + focusInput(cm); + // Work around unexplainable focus problem in IE9 (#2127) + if (ie_upto10 && !ie_upto8) + setTimeout(function() {document.body.focus(); focusInput(cm);}, 20); + } + }); + // Let the drag handler handle this. + if (webkit) display.scroller.draggable = true; + cm.state.draggingText = dragEnd; + // IE's approach to draggable + if (display.scroller.dragDrop) display.scroller.dragDrop(); + on(document, "mouseup", dragEnd); + on(display.scroller, "drop", dragEnd); + } + + // Normal selection, as opposed to text dragging. + function leftButtonSelect(cm, e, start, type, addNew) { + var display = cm.display, doc = cm.doc; + e_preventDefault(e); + + var ourRange, ourIndex, startSel = doc.sel; + if (addNew && !e.shiftKey) { + ourIndex = doc.sel.contains(start); + if (ourIndex > -1) + ourRange = doc.sel.ranges[ourIndex]; + else + ourRange = new Range(start, start); + } else { + ourRange = doc.sel.primary(); + } + + if (e.altKey) { + type = "rect"; + if (!addNew) ourRange = new Range(start, start); + start = posFromMouse(cm, e, true, true); + ourIndex = -1; + } else if (type == "double") { + var word = findWordAt(doc, start); + if (cm.display.shift || doc.extend) + ourRange = extendRange(doc, ourRange, word.anchor, word.head); + else + ourRange = word; + } else if (type == "triple") { + var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); + if (cm.display.shift || doc.extend) + ourRange = extendRange(doc, ourRange, line.anchor, line.head); + else + ourRange = line; + } else { + ourRange = extendRange(doc, ourRange, start); + } + + if (!addNew) { + ourIndex = 0; + setSelection(doc, new Selection([ourRange], 0), sel_mouse); + startSel = doc.sel; + } else if (ourIndex > -1) { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); + } else { + ourIndex = doc.sel.ranges.length; + setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } + + var lastPos = start; + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) return; + lastPos = pos; + + if (type == "rect") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); + else if (text.length > leftPos) + ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); + } + if (!ranges.length) ranges.push(new Range(start, start)); + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), sel_mouse); + } else { + var oldRange = ourRange; + var anchor = oldRange.anchor, head = pos; + if (type != "single") { + if (type == "double") + var range = findWordAt(doc, pos); + else + var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); + if (cmp(range.anchor, anchor) > 0) { + head = range.head; + anchor = minPos(oldRange.from(), range.anchor); + } else { + head = range.anchor; + anchor = maxPos(oldRange.to(), range.head); + } + } + var ranges = startSel.ranges.slice(0); + ranges[ourIndex] = new Range(clipPos(doc, anchor), head); + setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); + } + } + + var editorSize = display.wrapper.getBoundingClientRect(); + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0; + + function extend(e) { + var curCount = ++counter; + var cur = posFromMouse(cm, e, true, type == "rect"); + if (!cur) return; + if (cmp(cur, lastPos) != 0) { + ensureFocus(cm); + extendTo(cur); + var visible = visibleLines(display, doc); + if (cur.line >= visible.to || cur.line < visible.from) + setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) setTimeout(operation(cm, function() { + if (counter != curCount) return; + display.scroller.scrollTop += outside; + extend(e); + }), 50); + } + } + + function done(e) { + counter = Infinity; + e_preventDefault(e); + focusInput(cm); + off(document, "mousemove", move); + off(document, "mouseup", up); + doc.history.lastSelOrigin = null; + } + + var move = operation(cm, function(e) { + if ((ie && !ie_upto9) ? !e.buttons : !e_button(e)) done(e); + else extend(e); + }); + var up = operation(cm, done); + on(document, "mousemove", move); + on(document, "mouseup", up); + } + + // Determines whether an event happened in the gutter, and fires the + // handlers for the corresponding event. + function gutterEvent(cm, e, type, prevent, signalfn) { + try { var mX = e.clientX, mY = e.clientY; } + catch(e) { return false; } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; + if (prevent) e_preventDefault(e); + + var display = cm.display; + var lineBox = display.lineDiv.getBoundingClientRect(); + + if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); + mY -= lineBox.top - display.viewOffset; + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i]; + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY); + var gutter = cm.options.gutters[i]; + signalfn(cm, type, cm, line, gutter, e); + return e_defaultPrevented(e); + } + } + } + + function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true, signalLater); + } + + // Kludge to work around strange IE behavior where it'll sometimes + // re-fire a series of drag-related events right after the drop (#1551) + var lastDrop = 0; + + function onDrop(e) { + var cm = this; + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + return; + e_preventDefault(e); + if (ie) lastDrop = +new Date; + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || isReadOnly(cm)) return; + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + var loadFile = function(file, i) { + var reader = new FileReader; + reader.onload = operation(cm, function() { + text[i] = reader.result; + if (++read == n) { + pos = clipPos(cm.doc, pos); + var change = {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"}; + makeChange(cm.doc, change); + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); + } + }); + reader.readAsText(file); + }; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e); + // Ensure the editor is re-focused + setTimeout(bind(focusInput, cm), 20); + return; + } + try { + var text = e.dataTransfer.getData("Text"); + if (text) { + var selected = cm.state.draggingText && cm.listSelections(); + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); + if (selected) for (var i = 0; i < selected.length; ++i) + replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); + cm.replaceSelection(text, "around", "paste"); + focusInput(cm); + } + } + catch(e){} + } + } + + function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; + + e.dataTransfer.setData("Text", cm.getSelection()); + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + if (presto) { + img.width = img.height = 1; + cm.display.wrapper.appendChild(img); + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop; + } + e.dataTransfer.setDragImage(img, 0, 0); + if (presto) img.parentNode.removeChild(img); + } + } + + // SCROLL EVENTS + + // Sync the scrollable area and scrollbars, ensure the viewport + // covers the visible area. + function setScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) return; + cm.doc.scrollTop = val; + if (!gecko) updateDisplay(cm, {top: val}); + if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; + if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val; + if (gecko) updateDisplay(cm); + startWorker(cm, 100); + } + // Sync scroller and scrollbar, ensure the gutter elements are + // aligned. + function setScrollLeft(cm, val, isScroller) { + if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); + cm.doc.scrollLeft = val; + alignHorizontally(cm); + if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; + if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val; + } + + // Since the delta values reported on mouse wheel events are + // unstandardized between browsers and even browser versions, and + // generally horribly unpredictable, this code starts by measuring + // the scroll effect that the first few mouse wheel events have, + // and, from that, detects the way it can convert deltas to pixel + // offsets afterwards. + // + // The reason we want to know the amount a wheel event will scroll + // is that it gives us a chance to update the display before the + // actual scrolling happens, reducing flickering. + + var wheelSamples = 0, wheelPixelsPerUnit = null; + // Fill in a browser-detected starting value on browsers where we + // know one. These don't have to be accurate -- the result of them + // being wrong would just be a slight flicker on the first wheel + // scroll (if it is large enough). + if (ie) wheelPixelsPerUnit = -.53; + else if (gecko) wheelPixelsPerUnit = 15; + else if (chrome) wheelPixelsPerUnit = -.7; + else if (safari) wheelPixelsPerUnit = -1/3; + + function onScrollWheel(cm, e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; + else if (dy == null) dy = e.wheelDelta; + + var display = cm.display, scroll = display.scroller; + // Quit if there's nothing to scroll here + if (!(dx && scroll.scrollWidth > scroll.clientWidth || + dy && scroll.scrollHeight > scroll.clientHeight)) return; + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur; + break outer; + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy) + setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); + setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); + e_preventDefault(e); + display.wheelStartX = null; // Abort measurement, if in progress + return; + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) top = Math.max(0, top + pixels - 50); + else bot = Math.min(cm.doc.height, bot + pixels + 50); + updateDisplay(cm, {top: top, bottom: bot}); + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; + setTimeout(function() { + if (display.wheelStartX == null) return; + var movedX = scroll.scrollLeft - display.wheelStartX; + var movedY = scroll.scrollTop - display.wheelStartY; + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX); + display.wheelStartX = display.wheelStartY = null; + if (!sample) return; + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + ++wheelSamples; + }, 200); + } else { + display.wheelDX += dx; display.wheelDY += dy; + } + } + } + + // KEY EVENTS + + // Run a handler that was bound to a key. + function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) return false; + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false; + var prevShift = cm.display.shift, done = false; + try { + if (isReadOnly(cm)) cm.state.suppressEdits = true; + if (dropShift) cm.display.shift = false; + done = bound(cm) != Pass; + } finally { + cm.display.shift = prevShift; + cm.state.suppressEdits = false; + } + return done; + } + + // Collect the currently active keymaps. + function allKeyMaps(cm) { + var maps = cm.state.keyMaps.slice(0); + if (cm.options.extraKeys) maps.push(cm.options.extraKeys); + maps.push(cm.options.keyMap); + return maps; + } + + var maybeTransition; + // Handle a key from the keydown event. + function handleKeyBinding(cm, e) { + // Handle automatic keymap transitions + var startMap = getKeyMap(cm.options.keyMap), next = startMap.auto; + clearTimeout(maybeTransition); + if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { + if (getKeyMap(cm.options.keyMap) == startMap) { + cm.options.keyMap = (next.call ? next.call(null, cm) : next); + keyMapChanged(cm); + } + }, 50); + + var name = keyName(e, true), handled = false; + if (!name) return false; + var keymaps = allKeyMaps(cm); + + if (e.shiftKey) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + handled = lookupKey("Shift-" + name, keymaps, function(b) {return doHandleBinding(cm, b, true);}) + || lookupKey(name, keymaps, function(b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + return doHandleBinding(cm, b); + }); + } else { + handled = lookupKey(name, keymaps, function(b) { return doHandleBinding(cm, b); }); + } + + if (handled) { + e_preventDefault(e); + restartBlink(cm); + signalLater(cm, "keyHandled", cm, name, e); + } + return handled; + } + + // Handle a key from the keypress event + function handleCharBinding(cm, e, ch) { + var handled = lookupKey("'" + ch + "'", allKeyMaps(cm), + function(b) { return doHandleBinding(cm, b, true); }); + if (handled) { + e_preventDefault(e); + restartBlink(cm); + signalLater(cm, "keyHandled", cm, "'" + ch + "'", e); + } + return handled; + } + + var lastStoppedKey = null; + function onKeyDown(e) { + var cm = this; + ensureFocus(cm); + if (signalDOMEvent(cm, e)) return; + // IE does strange things with escape. + if (ie_upto10 && e.keyCode == 27) e.returnValue = false; + var code = e.keyCode; + cm.display.shift = code == 16 || e.shiftKey; + var handled = handleKeyBinding(cm, e); + if (presto) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + cm.replaceSelection("", null, "cut"); + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + showCrossHair(cm); + } + + function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv; + addClass(lineDiv, "CodeMirror-crosshair"); + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); + } + } + on(document, "keyup", up); + on(document, "mouseover", up); + } + + function onKeyUp(e) { + if (signalDOMEvent(this, e)) return; + if (e.keyCode == 16) this.doc.sel.shift = false; + } + + function onKeyPress(e) { + var cm = this; + if (signalDOMEvent(cm, e)) return; + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} + if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + if (handleCharBinding(cm, e, ch)) return; + if (ie && !ie_upto8) cm.display.inputHasSelection = null; + fastPoll(cm); + } + + // FOCUS/BLUR EVENTS + + function onFocus(cm) { + if (cm.options.readOnly == "nocursor") return; + if (!cm.state.focused) { + signal(cm, "focus", cm); + cm.state.focused = true; + addClass(cm.display.wrapper, "CodeMirror-focused"); + // The prevInput test prevents this from firing when a context + // menu is closed (since the resetInput would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu == cm.doc.sel) { + resetInput(cm); + if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730 + } + } + slowPoll(cm); + restartBlink(cm); + } + function onBlur(cm) { + if (cm.state.focused) { + signal(cm, "blur", cm); + cm.state.focused = false; + rmClass(cm.display.wrapper, "CodeMirror-focused"); + } + clearInterval(cm.display.blinker); + setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); + } + + // CONTEXT MENU HANDLING + + var detectingSelectAll; + // To make the context menu work, we need to briefly unhide the + // textarea (making it as unobtrusive as possible) to let the + // right-click take effect on it. + function onContextMenu(cm, e) { + if (signalDOMEvent(cm, e, "contextmenu")) return; + var display = cm.display; + if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return; + + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) return; // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu; + if (reset && cm.doc.sel.contains(pos) == -1) + operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); + + var oldCSS = display.input.style.cssText; + display.inputDiv.style.position = "absolute"; + display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + + "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " + + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + focusInput(cm); + resetInput(cm); + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) display.input.value = display.prevInput = " "; + display.selForContextMenu = cm.doc.sel; + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (display.input.selectionStart != null) { + var selected = cm.somethingSelected(); + var extval = display.input.value = "\u200b" + (selected ? display.input.value : ""); + display.prevInput = selected ? "" : "\u200b"; + display.input.selectionStart = 1; display.input.selectionEnd = extval.length; + } + } + function rehide() { + display.inputDiv.style.position = "relative"; + display.input.style.cssText = oldCSS; + if (ie_upto8) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos; + slowPoll(cm); + + // Try to detect the user choosing select-all + if (display.input.selectionStart != null) { + if (!ie || ie_upto8) prepareSelectAllHack(); + clearTimeout(detectingSelectAll); + var i = 0, poll = function() { + if (display.selForContextMenu == cm.doc.sel && display.input.selectionStart == 0) + operation(cm, commands.selectAll)(cm); + else if (i++ < 10) detectingSelectAll = setTimeout(poll, 500); + else resetInput(cm); + }; + detectingSelectAll = setTimeout(poll, 200); + } + } + + if (ie && !ie_upto8) prepareSelectAllHack(); + if (captureRightClick) { + e_stop(e); + var mouseup = function() { + off(window, "mouseup", mouseup); + setTimeout(rehide, 20); + }; + on(window, "mouseup", mouseup); + } else { + setTimeout(rehide, 50); + } + } + + function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) return false; + return gutterEvent(cm, e, "gutterContextMenu", false, signal); + } + + // UPDATING + + // Compute the position of the end of a change (its 'to' property + // refers to the pre-change end). + var changeEnd = CodeMirror.changeEnd = function(change) { + if (!change.text) return change.to; + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); + }; + + // Adjust a position to refer to the post-change position of the + // same text, or the end of the change if the change covers it. + function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) return pos; + if (cmp(pos, change.to) <= 0) return changeEnd(change); + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; + return Pos(line, ch); + } + + function computeSelAfterChange(doc, change) { + var out = []; + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); + } + return normalizeSelection(out, doc.sel.primIndex); + } + + function offsetPos(pos, old, nw) { + if (pos.line == old.line) + return Pos(nw.line, pos.ch - old.ch + nw.ch); + else + return Pos(nw.line + (pos.line - old.line), pos.ch); + } + + // Used by replaceSelections to allow moving the selection to the + // start or around the replaced test. Hint may be "start" or "around". + function computeReplacedSel(doc, changes, hint) { + var out = []; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + var from = offsetPos(change.from, oldPrev, newPrev); + var to = offsetPos(changeEnd(change), oldPrev, newPrev); + oldPrev = change.to; + newPrev = to; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; + out[i] = new Range(inv ? to : from, inv ? from : to); + } else { + out[i] = new Range(from, from); + } + } + return new Selection(out, doc.sel.primIndex); + } + + // Allow "beforeChange" event handlers to influence a change + function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function() { this.canceled = true; } + }; + if (update) obj.update = function(from, to, text, origin) { + if (from) this.from = clipPos(doc, from); + if (to) this.to = clipPos(doc, to); + if (text) this.text = text; + if (origin !== undefined) this.origin = origin; + }; + signal(doc, "beforeChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); + + if (obj.canceled) return null; + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; + } + + // Apply a change to a document, and add it to the document's + // history, and propagating it to all linked documents. + function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); + if (doc.cm.state.suppressEdits) return; + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true); + if (!change) return; + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); + if (split) { + for (var i = split.length - 1; i >= 0; --i) + makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); + } else { + makeChangeInner(doc, change); + } + } + + function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; + var selAfter = computeSelAfterChange(doc, change); + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); + var rebased = []; + + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); + }); + } + + // Revert a change stored in a document's history. + function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits) return; + + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + for (var i = 0; i < source.length; i++) { + event = source[i]; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + break; + } + if (i == source.length) return; + hist.lastOrigin = hist.lastSelOrigin = null; + + for (;;) { + event = source.pop(); + if (event.ranges) { + pushSelectionToHistory(event, dest); + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}); + return; + } + selAfter = event; + } + else break; + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = []; + pushSelectionToHistory(selAfter, dest); + dest.push({changes: antiChanges, generation: hist.generation}); + hist.generation = event.generation || ++hist.maxGeneration; + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); + + for (var i = event.changes.length - 1; i >= 0; --i) { + var change = event.changes[i]; + change.origin = type; + if (filter && !filterChange(doc, change, false)) { + source.length = 0; + return; + } + + antiChanges.push(historyChangeFromChange(doc, change)); + + var after = i ? computeSelAfterChange(doc, change, null) : lst(source); + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); + if (doc.cm) ensureCursorVisible(doc.cm); + var rebased = []; + + // Propagate to the linked documents + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); + }); + } + } + + // Sub-views need their line numbers shifted when text is added + // above or below them in the parent document. + function shiftDoc(doc, distance) { + doc.first += distance; + doc.sel = new Selection(map(doc.sel.ranges, function(range) { + return new Range(Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch)); + }), doc.sel.primIndex); + if (doc.cm) regChange(doc.cm, doc.first, doc.first - distance, distance); + } + + // More lower-level change function, handling only a single document + // (not linked ones). + function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return; + } + if (change.from.line > doc.lastLine()) return; + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line); + shiftDoc(doc, shift); + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; + } + var last = doc.lastLine(); + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; + } + + change.removed = getBetween(doc, change.from, change.to); + + if (!selAfter) selAfter = computeSelAfterChange(doc, change, null); + if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); + else updateDoc(doc, change, spans); + setSelectionNoUndo(doc, selAfter, sel_dontScroll); + } + + // Handle the interaction of a change to a document with the editor + // that this document is part of. + function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; + + var recomputeMaxLength = false, checkWidthStart = from.line; + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); + doc.iter(checkWidthStart, to.line + 1, function(line) { + if (line == display.maxLine) { + recomputeMaxLength = true; + return true; + } + }); + } + + if (doc.sel.contains(change.from, change.to) > -1) + signalCursorActivity(cm); + + updateDoc(doc, change, spans, estimateHeight(cm)); + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function(line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) cm.curOp.updateMaxLine = true; + } + + // Adjust frontier, schedule worker + doc.frontier = Math.min(doc.frontier, from.line); + startWorker(cm, 400); + + var lendiff = change.text.length - (to.line - from.line) - 1; + // Remember that these lines changed, for updating the display + if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + regLineChange(cm, from.line, "text"); + else + regChange(cm, from.line, to.line + 1, lendiff); + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + }; + if (changeHandler) signalLater(cm, "change", cm, obj); + if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); + } + } + + function replaceRange(doc, code, from, to, origin) { + if (!to) to = from; + if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } + if (typeof code == "string") code = splitLines(code); + makeChange(doc, {from: from, to: to, text: code, origin: origin}); + } + + // SCROLLING THINGS INTO VIEW + + // If an editor sits on the top or bottom of the window, partially + // scrolled out of view, this ensures that the cursor is visible. + function maybeScrollWindow(cm, coords) { + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + if (coords.top + box.top < 0) doScroll = true; + else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + + (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + + (coords.bottom - coords.top + scrollerCutOff) + "px; left: " + + coords.left + "px; width: 2px;"); + cm.display.lineSpace.appendChild(scrollNode); + scrollNode.scrollIntoView(doScroll); + cm.display.lineSpace.removeChild(scrollNode); + } + } + + // Scroll a given position into view (immediately), verifying that + // it actually became visible (as line heights are accurately + // measured, the position of something may 'drift' during drawing). + function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) margin = 0; + for (;;) { + var changed = false, coords = cursorCoords(cm, pos); + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); + var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), + Math.min(coords.top, endCoords.top) - margin, + Math.max(coords.left, endCoords.left), + Math.max(coords.bottom, endCoords.bottom) + margin); + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; + if (scrollPos.scrollTop != null) { + setScrollTop(cm, scrollPos.scrollTop); + if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft); + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; + } + if (!changed) return coords; + } + } + + // Scroll a given set of coordinates into view (immediately). + function scrollIntoView(cm, x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); + if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); + if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); + } + + // Calculate a new scroll position needed to scroll the given + // rectangle into view. Returns an object with scrollTop and + // scrollLeft properties. When these are undefined, the + // vertical/horizontal position does not need to be adjusted. + function calculateScrollPos(cm, x1, y1, x2, y2) { + var display = cm.display, snapMargin = textHeight(cm.display); + if (y1 < 0) y1 = 0; + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = display.scroller.clientHeight - scrollerCutOff, result = {}; + var docBottom = cm.doc.height + paddingVert(display); + var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; + if (y1 < screentop) { + result.scrollTop = atTop ? 0 : y1; + } else if (y2 > screentop + screen) { + var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); + if (newTop != screentop) result.scrollTop = newTop; + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; + var screenw = display.scroller.clientWidth - scrollerCutOff; + x1 += display.gutters.offsetWidth; x2 += display.gutters.offsetWidth; + var gutterw = display.gutters.offsetWidth; + var atLeft = x1 < gutterw + 10; + if (x1 < screenleft + gutterw || atLeft) { + if (atLeft) x1 = 0; + result.scrollLeft = Math.max(0, x1 - 10 - gutterw); + } else if (x2 > screenw + screenleft - 3) { + result.scrollLeft = x2 + 10 - screenw; + } + return result; + } + + // Store a relative adjustment to the scroll position in the current + // operation (to be applied when the operation finishes). + function addToScrollPos(cm, left, top) { + if (left != null || top != null) resolveScrollToPos(cm); + if (left != null) + cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; + if (top != null) + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; + } + + // Make sure that at the end of the operation the current cursor is + // shown. + function ensureCursorVisible(cm) { + resolveScrollToPos(cm); + var cur = cm.getCursor(), from = cur, to = cur; + if (!cm.options.lineWrapping) { + from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; + to = Pos(cur.line, cur.ch + 1); + } + cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; + } + + // When an operation has its scrollToPos property set, and another + // scroll action is applied before the end of the operation, this + // 'simulates' scrolling that position into view in a cheap way, so + // that the effect of intermediate scroll commands is not ignored. + function resolveScrollToPos(cm) { + var range = cm.curOp.scrollToPos; + if (range) { + cm.curOp.scrollToPos = null; + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); + var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), + Math.min(from.top, to.top) - range.margin, + Math.max(from.right, to.right), + Math.max(from.bottom, to.bottom) + range.margin); + cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); + } + } + + // API UTILITIES + + // Indent the given line. The how parameter can be "smart", + // "add"/null, "subtract", or "prev". When aggressive is false + // (typically set to true for forced single-line indents), empty + // lines are not indented, and places where the mode returns Pass + // are left alone. + function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state; + if (how == null) how = "add"; + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!cm.doc.mode.indent) how = "prev"; + else state = getStateBefore(cm, n); + } + + var tabSize = cm.options.tabSize; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) line.stateAfter = null; + var curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0; + how = "not"; + } else if (how == "smart") { + indentation = cm.doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass) { + if (!aggressive) return; + how = "prev"; + } + } + if (how == "prev") { + if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); + else indentation = 0; + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit; + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit; + } else if (typeof how == "number") { + indentation = curSpace + how; + } + indentation = Math.max(0, indentation); + + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} + if (pos < indentation) indentString += spaceStr(indentation - pos); + + if (indentString != curSpaceString) { + replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos = Pos(n, curSpaceString.length); + replaceOneSelection(doc, i, new Range(pos, pos)); + break; + } + } + } + line.stateAfter = null; + } + + // Utility for applying a change to a line by handle or number, + // returning the number and optionally registering the line as + // changed. + function changeLine(cm, handle, changeType, op) { + var no = handle, line = handle, doc = cm.doc; + if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); + else no = lineNo(handle); + if (no == null) return null; + if (op(line, no)) regLineChange(cm, no, changeType); + return line; + } + + // Helper for deleting text near the selection(s), used to implement + // backspace, delete, and similar functionality. + function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = []; + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]); + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop(); + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from; + break; + } + } + kill.push(toKill); + } + // Next, remove those actual ranges. + runInOp(cm, function() { + for (var i = kill.length - 1; i >= 0; i--) + replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); + ensureCursorVisible(cm); + }); + } + + // Used for horizontal relative motion. Dir is -1 or 1 (left or + // right), unit can be "char", "column" (like char, but doesn't + // cross line boundaries), "word" (across next word), or "group" (to + // the start of next group of word or non-word-non-whitespace + // chars). The visually param controls whether, in right-to-left + // text, direction 1 means to move towards the next index in the + // string, or towards the character to the right of the current + // position. The resulting position will have a hitSide=true + // property if it reached the end of the document. + function findPosH(doc, pos, dir, unit, visually) { + var line = pos.line, ch = pos.ch, origDir = dir; + var lineObj = getLine(doc, line); + var possible = true; + function findNextLine() { + var l = line + dir; + if (l < doc.first || l >= doc.first + doc.size) return (possible = false); + line = l; + return lineObj = getLine(doc, l); + } + function moveOnce(boundToLine) { + var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); + if (next == null) { + if (!boundToLine && findNextLine()) { + if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); + else ch = dir < 0 ? lineObj.text.length : 0; + } else return (possible = false); + } else ch = next; + return true; + } + + if (unit == "char") moveOnce(); + else if (unit == "column") moveOnce(true); + else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) break; + var cur = lineObj.text.charAt(ch) || "\n"; + var type = isWordChar(cur) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) type = "s"; + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce();} + break; + } + + if (type) sawType = type; + if (dir > 0 && !moveOnce(!first)) break; + } + } + var result = skipAtomic(doc, Pos(line, ch), origDir, true); + if (!possible) result.hitSide = true; + return result; + } + + // For relative vertical movement. Dir may be -1 or 1. Unit can be + // "page" or "line". The resulting position will have a hitSide=true + // property if it reached the end of the document. + function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); + y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3; + } + for (;;) { + var target = coordsChar(cm, x, y); + if (!target.outside) break; + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } + y += dir * 5; + } + return target; + } + + // Find the word at the given position (as returned by coordsChar). + function findWordAt(doc, pos) { + var line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; + if (line) { + if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; + var startChar = line.charAt(start); + var check = isWordChar(startChar) ? isWordChar + : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} + : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)); + } + + // EDITOR METHODS + + // The publicly visible API. Note that methodOp(f) means + // 'wrap f in an operation, performed on its `this` parameter'. + + // This is not the complete set of editor methods. Most of the + // methods defined on the Doc type are also injected into + // CodeMirror.prototype, for backwards compatibility and + // convenience. + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); focusInput(this); fastPoll(this);}, + + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") return; + options[option] = value; + if (optionHandlers.hasOwnProperty(option)) + operation(this, optionHandlers[option])(this, value, old); + }, + + getOption: function(option) {return this.options[option];}, + getDoc: function() {return this.doc;}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](map); + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps; + for (var i = 0; i < maps.length; ++i) + if (maps[i] == map || (typeof maps[i] != "string" && maps[i].name == map)) { + maps.splice(i, 1); + return true; + } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); + if (mode.startState) throw new Error("Overlays may not be stateful."); + this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); + this.state.modeGen++; + regChange(this); + }), + removeOverlay: methodOp(function(spec) { + var overlays = this.state.overlays; + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec; + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1); + this.state.modeGen++; + regChange(this); + return; + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; + else dir = dir ? "add" : "subtract"; + } + if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); + }), + indentSelection: methodOp(function(how) { + var ranges = this.doc.sel.ranges, end = -1; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (!range.empty()) { + var start = Math.max(end, range.from().line); + var to = range.to(); + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + indentLine(this, j, how); + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true); + end = range.head.line; + if (i == this.doc.sel.primIndex) ensureCursorVisible(this); + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + var doc = this.doc; + pos = clipPos(doc, pos); + var state = getStateBefore(this, pos.line, precise), mode = this.doc.mode; + var line = getLine(doc, pos.line); + var stream = new StringStream(line.text, this.options.tabSize); + while (stream.pos < pos.ch && !stream.eol()) { + stream.start = stream.pos; + var style = readToken(mode, stream, state); + } + return {start: stream.start, + end: stream.pos, + string: stream.current(), + type: style || null, + state: state}; + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos); + var styles = getLineStyles(this, getLine(this.doc, pos.line)); + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; + var type; + if (ch == 0) type = styles[2]; + else for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; + else if (styles[mid * 2 + 1] < ch) before = mid + 1; + else { type = styles[mid * 2 + 2]; break; } + } + var cut = type ? type.indexOf("cm-overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); + }, + + getModeAt: function(pos) { + var mode = this.doc.mode; + if (!mode.innerMode) return mode; + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0]; + }, + + getHelpers: function(pos, type) { + var found = []; + if (!helpers.hasOwnProperty(type)) return helpers; + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) found.push(help[mode[type]]); + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]]; + if (val) found.push(val); + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]); + } else if (help[mode.name]) { + found.push(help[mode.name]); + } + for (var i = 0; i < help._global.length; i++) { + var cur = help._global[i]; + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + found.push(cur.val); + } + return found; + }, + + getStateAfter: function(line, precise) { + var doc = this.doc; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getStateBefore(this, line + 1, precise); + }, + + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary(); + if (start == null) pos = range.head; + else if (typeof start == "object") pos = clipPos(this.doc, start); + else pos = start ? range.from() : range.to(); + return cursorCoords(this, pos, mode || "page"); + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page"); + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top); + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset); + }, + heightAtLine: function(line, mode) { + var end = false, last = this.doc.first + this.doc.size - 1; + if (line < this.doc.first) line = this.doc.first; + else if (line > last) { line = last; end = true; } + var lineObj = getLine(this.doc, line); + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + + (end ? this.doc.height - heightAtLine(lineObj) : 0); + }, + + defaultTextHeight: function() { return textHeight(this.display); }, + defaultCharWidth: function() { return charWidth(this.display); }, + + setGutterMarker: methodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function(line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}); + markers[gutterID] = value; + if (!value && isEmpty(markers)) line.gutterMarkers = null; + return true; + }); + }), + + clearGutter: methodOp(function(gutterID) { + var cm = this, doc = cm.doc, i = doc.first; + doc.iter(function(line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + line.gutterMarkers[gutterID] = null; + regLineChange(cm, i, "gutter"); + if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; + } + ++i; + }); + }), + + addLineClass: methodOp(function(handle, where, cls) { + return changeLine(this, handle, "class", function(line) { + var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; + if (!line[prop]) line[prop] = cls; + else if (new RegExp("(?:^|\\s)" + cls + "(?:$|\\s)").test(line[prop])) return false; + else line[prop] += " " + cls; + return true; + }); + }), + + removeLineClass: methodOp(function(handle, where, cls) { + return changeLine(this, handle, "class", function(line) { + var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) return false; + else if (cls == null) line[prop] = null; + else { + var found = cur.match(new RegExp("(?:^|\\s+)" + cls + "(?:$|\\s+)")); + if (!found) return false; + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true; + }); + }), + + addLineWidget: methodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options); + }), + + removeLineWidget: function(widget) { widget.clear(); }, + + lineInfo: function(line) { + if (typeof line == "number") { + if (!isLine(this.doc, line)) return null; + var n = line; + line = getLine(this.doc, line); + if (!line) return null; + } else { + var n = lineNo(line); + if (n == null) return null; + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets}; + }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display; + pos = cursorCoords(this, clipPos(this.doc, pos)); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + display.sizer.appendChild(node); + if (vert == "over") { + top = pos.top; + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + top = pos.top - node.offsetHeight; + else if (pos.bottom + node.offsetHeight <= vspace) + top = pos.bottom; + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth; + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") left = 0; + else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; + node.style.left = left + "px"; + } + if (scroll) + scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: methodOp(onKeyUp), + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + return commands[cmd](this); + }, + + findPosH: function(from, amount, unit, visually) { + var dir = 1; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) break; + } + return cur; + }, + + moveH: methodOp(function(dir, unit) { + var cm = this; + cm.extendSelectionsBy(function(range) { + if (cm.display.shift || cm.doc.extend || range.empty()) + return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); + else + return dir < 0 ? range.from() : range.to(); + }, sel_move); + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + doc.replaceSelection("", null, "+delete"); + else + deleteNearSelection(this, function(range) { + var other = findPosH(doc, range.head, dir, unit, false); + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; + }); + }), + + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + var coords = cursorCoords(this, cur, "div"); + if (x == null) x = coords.left; + else coords.left = x; + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) break; + } + return cur; + }, + + moveV: methodOp(function(dir, unit) { + var cm = this, doc = this.doc, goals = []; + var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function(range) { + if (collapse) + return dir < 0 ? range.from() : range.to(); + var headPos = cursorCoords(cm, range.head, "div"); + if (range.goalColumn != null) headPos.left = range.goalColumn; + goals.push(headPos.left); + var pos = findPosV(cm, headPos, dir, unit); + if (unit == "page" && range == doc.sel.primary()) + addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); + return pos; + }, sel_move); + if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) + doc.sel.ranges[i].goalColumn = goals[i]; + }), + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) return; + if (this.state.overwrite = !this.state.overwrite) + addClass(this.display.cursorDiv, "CodeMirror-overwrite"); + else + rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); + + signal(this, "overwriteToggle", this, this.state.overwrite); + }, + hasFocus: function() { return activeElt() == this.display.input; }, + + scrollTo: methodOp(function(x, y) { + if (x != null || y != null) resolveScrollToPos(this); + if (x != null) this.curOp.scrollLeft = x; + if (y != null) this.curOp.scrollTop = y; + }), + getScrollInfo: function() { + var scroller = this.display.scroller, co = scrollerCutOff; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - co, width: scroller.scrollWidth - co, + clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co}; + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) margin = this.options.cursorScrollMargin; + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null}; + } else if (range.from == null) { + range = {from: range, to: null}; + } + if (!range.to) range.to = range.from; + range.margin = margin || 0; + + if (range.from.line != null) { + resolveScrollToPos(this); + this.curOp.scrollToPos = range; + } else { + var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), + Math.min(range.from.top, range.to.top) - range.margin, + Math.max(range.from.right, range.to.right), + Math.max(range.from.bottom, range.to.bottom) + range.margin); + this.scrollTo(sPos.scrollLeft, sPos.scrollTop); + } + }), + + setSize: methodOp(function(width, height) { + function interpret(val) { + return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; + } + if (width != null) this.display.wrapper.style.width = interpret(width); + if (height != null) this.display.wrapper.style.height = interpret(height); + if (this.options.lineWrapping) clearLineMeasurementCache(this); + this.curOp.forceUpdate = true; + signal(this, "refresh", this); + }), + + operation: function(f){return runInOp(this, f);}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight; + regChange(this); + this.curOp.forceUpdate = true; + clearCaches(this); + this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); + updateGutterSpace(this); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + estimateLineHeights(this); + signal(this, "refresh", this); + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc; + old.cm = null; + attachDoc(this, doc); + clearCaches(this); + resetInput(this); + this.scrollTo(doc.scrollLeft, doc.scrollTop); + signalLater(this, "swapDoc", this, old); + return old; + }), + + getInputField: function(){return this.display.input;}, + getWrapperElement: function(){return this.display.wrapper;}, + getScrollerElement: function(){return this.display.scroller;}, + getGutterElement: function(){return this.display.gutters;} + }; + eventMixin(CodeMirror); + + // OPTION DEFAULTS + + // The default configuration options. + var defaults = CodeMirror.defaults = {}; + // Functions to run when options are changed. + var optionHandlers = CodeMirror.optionHandlers = {}; + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt; + if (handle) optionHandlers[name] = + notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; + } + + // Passed to option handlers when there is no old value. + var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function(cm, val) { + cm.setValue(val); + }, true); + option("mode", null, function(cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function(cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); + option("specialChars", /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) { + cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + cm.refresh(); + }, true); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); + option("electricChars", true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function(cm) { + themeChanged(cm); + guttersChanged(cm); + }, true); + option("keyMap", "default", keyMapChanged); + option("extraKeys", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("fixedGutter", true, function(cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, updateScrollbars, true); + option("lineNumbers", false, function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("firstLineNumber", 1, guttersChanged, true); + option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + + option("readOnly", false, function(cm, val) { + if (val == "nocursor") { + onBlur(cm); + cm.display.input.blur(); + cm.display.disabled = true; + } else { + cm.display.disabled = false; + if (!val) resetInput(cm); + } + }); + option("disableInput", false, function(cm, val) {if (!val) resetInput(cm);}, true); + option("dragDrop", true); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function(cm){cm.refresh();}, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function(cm, val) { + if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0; + }); + + option("tabindex", null, function(cm, val) { + cm.display.input.tabIndex = val || ""; + }); + option("autofocus", null); + + // MODE DEFINITION AND QUERYING + + // Known modes, by name and by MIME + var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; + + // Extra arguments are stored as the mode's dependencies, which is + // used by (legacy) mechanisms like loadmode.js to automatically + // load a mode. (Preferred mechanism is the require/define calls.) + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + if (arguments.length > 2) { + mode.dependencies = []; + for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); + } + modes[name] = mode; + }; + + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + + // Given a MIME type, a {name, ...options} config object, or a name + // string, return a mode config object. + CodeMirror.resolveMode = function(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec]; + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name]; + if (typeof found == "string") found = {name: found}; + spec = createObj(found, spec); + spec.name = found.name; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return CodeMirror.resolveMode("application/xml"); + } + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + + // Given a mode spec (anything that resolveMode accepts), find and + // initialize an actual mode object. + CodeMirror.getMode = function(options, spec) { + var spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) return CodeMirror.getMode(options, "text/plain"); + var modeObj = mfactory(options, spec); + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name]; + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) continue; + if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; + modeObj[prop] = exts[prop]; + } + } + modeObj.name = spec.name; + if (spec.helperType) modeObj.helperType = spec.helperType; + if (spec.modeProps) for (var prop in spec.modeProps) + modeObj[prop] = spec.modeProps[prop]; + + return modeObj; + }; + + // Minimal default mode. + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + // This can be used to attach properties to mode objects from + // outside the actual mode definition. + var modeExtensions = CodeMirror.modeExtensions = {}; + CodeMirror.extendMode = function(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); + copyObj(properties, exts); + }; + + // EXTENSIONS + + CodeMirror.defineExtension = function(name, func) { + CodeMirror.prototype[name] = func; + }; + CodeMirror.defineDocExtension = function(name, func) { + Doc.prototype[name] = func; + }; + CodeMirror.defineOption = option; + + var initHooks = []; + CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; + + var helpers = CodeMirror.helpers = {}; + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; + helpers[type][name] = value; + }; + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value); + helpers[type]._global.push({pred: predicate, val: value}); + }; + + // MODE STATE HANDLING + + // Utility functions for working with state. Exported because nested + // modes need to do this for their inner modes. + + var copyState = CodeMirror.copyState = function(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + }; + + var startState = CodeMirror.startState = function(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + }; + + // Given a mode and a state (for that mode), find the inner mode and + // state at the position that the state refers to. + CodeMirror.innerMode = function(mode, state) { + while (mode.innerMode) { + var info = mode.innerMode(state); + if (!info || info.mode == mode) break; + state = info.state; + mode = info.mode; + } + return info || {mode: mode, state: state}; + }; + + // STANDARD COMMANDS + + // Commands are parameter-less actions that can be performed on an + // editor, mostly used for keybindings. + var commands = CodeMirror.commands = { + selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, + singleSelection: function(cm) { + cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); + }, + killLine: function(cm) { + deleteNearSelection(cm, function(range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + return {from: range.head, to: Pos(range.head.line + 1, 0)}; + else + return {from: range.head, to: Pos(range.head.line, len)}; + } else { + return {from: range.from(), to: range.to()}; + } + }); + }, + deleteLine: function(cm) { + deleteNearSelection(cm, function(range) { + return {from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; + }); + }, + delLineLeft: function(cm) { + deleteNearSelection(cm, function(range) { + return {from: Pos(range.from().line, 0), to: range.from()}; + }); + }, + undo: function(cm) {cm.undo();}, + redo: function(cm) {cm.redo();}, + undoSelection: function(cm) {cm.undoSelection();}, + redoSelection: function(cm) {cm.redoSelection();}, + goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, + goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, + goLineStart: function(cm) { + cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, sel_move); + }, + goLineStartSmart: function(cm) { + cm.extendSelectionsBy(function(range) { + var start = lineStart(cm, range.head.line); + var line = cm.getLineHandle(start.line); + var order = getOrder(line); + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)); + var inWS = range.head.line == start.line && range.head.ch <= firstNonWS && range.head.ch; + return Pos(start.line, inWS ? 0 : firstNonWS); + } + return start; + }, sel_move); + }, + goLineEnd: function(cm) { + cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, sel_move); + }, + goLineRight: function(cm) { + cm.extendSelectionsBy(function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + }, sel_move); + }, + goLineLeft: function(cm) { + cm.extendSelectionsBy(function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div"); + }, sel_move); + }, + goLineUp: function(cm) {cm.moveV(-1, "line");}, + goLineDown: function(cm) {cm.moveV(1, "line");}, + goPageUp: function(cm) {cm.moveV(-1, "page");}, + goPageDown: function(cm) {cm.moveV(1, "page");}, + goCharLeft: function(cm) {cm.moveH(-1, "char");}, + goCharRight: function(cm) {cm.moveH(1, "char");}, + goColumnLeft: function(cm) {cm.moveH(-1, "column");}, + goColumnRight: function(cm) {cm.moveH(1, "column");}, + goWordLeft: function(cm) {cm.moveH(-1, "word");}, + goGroupRight: function(cm) {cm.moveH(1, "group");}, + goGroupLeft: function(cm) {cm.moveH(-1, "group");}, + goWordRight: function(cm) {cm.moveH(1, "word");}, + delCharBefore: function(cm) {cm.deleteH(-1, "char");}, + delCharAfter: function(cm) {cm.deleteH(1, "char");}, + delWordBefore: function(cm) {cm.deleteH(-1, "word");}, + delWordAfter: function(cm) {cm.deleteH(1, "word");}, + delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, + delGroupAfter: function(cm) {cm.deleteH(1, "group");}, + indentAuto: function(cm) {cm.indentSelection("smart");}, + indentMore: function(cm) {cm.indentSelection("add");}, + indentLess: function(cm) {cm.indentSelection("subtract");}, + insertTab: function(cm) {cm.replaceSelection("\t");}, + insertSoftTab: function(cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from(); + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); + spaces.push(new Array(tabSize - col % tabSize + 1).join(" ")); + } + cm.replaceSelections(spaces); + }, + defaultTab: function(cm) { + if (cm.somethingSelected()) cm.indentSelection("add"); + else cm.execCommand("insertTab"); + }, + transposeChars: function(cm) { + runInOp(cm, function() { + var ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (cur.ch > 0 && cur.ch < line.length - 1) + cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1), + Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1)); + } + }); + }, + newlineAndIndent: function(cm) { + runInOp(cm, function() { + var len = cm.listSelections().length; + for (var i = 0; i < len; i++) { + var range = cm.listSelections()[i]; + cm.replaceRange("\n", range.anchor, range.head, "+input"); + cm.indentLine(range.from().line + 1, null, true); + ensureCursorVisible(cm); + } + }); + }, + toggleOverwrite: function(cm) {cm.toggleOverwrite();} + }; + + // STANDARD KEYMAPS + + var keyMap = CodeMirror.keyMap = {}; + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" + }; + // Note that the save and find-related commands aren't defined by + // default. User code or addons can define them. Unknown commands + // are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-Up": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Down": "goDocEnd", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" + }; + keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineStart", "Cmd-Right": "goLineEnd", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delLineLeft", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", + fallthrough: ["basic", "emacsy"] + }; + // Very basic readline/emacs-style bindings, which are standard on Mac. + keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + + // KEYMAP DISPATCH + + function getKeyMap(val) { + if (typeof val == "string") return keyMap[val]; + else return val; + } + + // Given an array of keymaps and a key name, call handle on any + // bindings found, until that returns a truthy value, at which point + // we consider the key handled. Implements things like binding a key + // to false stopping further handling and keymap fallthrough. + var lookupKey = CodeMirror.lookupKey = function(name, maps, handle) { + function lookup(map) { + map = getKeyMap(map); + var found = map[name]; + if (found === false) return "stop"; + if (found != null && handle(found)) return true; + if (map.nofallthrough) return "stop"; + + var fallthrough = map.fallthrough; + if (fallthrough == null) return false; + if (Object.prototype.toString.call(fallthrough) != "[object Array]") + return lookup(fallthrough); + for (var i = 0; i < fallthrough.length; ++i) { + var done = lookup(fallthrough[i]); + if (done) return done; + } + return false; + } + + for (var i = 0; i < maps.length; ++i) { + var done = lookup(maps[i]); + if (done) return done != "stop"; + } + }; + + // Modifier key presses don't count as 'real' key presses for the + // purpose of keymap fallthrough. + var isModifierKey = CodeMirror.isModifierKey = function(event) { + var name = keyNames[event.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; + }; + + // Look up the name of a key as indicated by an event object. + var keyName = CodeMirror.keyName = function(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) return false; + var name = keyNames[event.keyCode]; + if (name == null || event.altGraphKey) return false; + if (event.altKey) name = "Alt-" + name; + if (flipCtrlCmd ? event.metaKey : event.ctrlKey) name = "Ctrl-" + name; + if (flipCtrlCmd ? event.ctrlKey : event.metaKey) name = "Cmd-" + name; + if (!noShift && event.shiftKey) name = "Shift-" + name; + return name; + }; + + // FROMTEXTAREA + + CodeMirror.fromTextArea = function(textarea, options) { + if (!options) options = {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabindex) + options.tabindex = textarea.tabindex; + if (!options.placeholder && textarea.placeholder) + options.placeholder = textarea.placeholder; + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt(); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } + + function save() {textarea.value = cm.getValue();} + if (textarea.form) { + on(textarea.form, "submit", save); + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form, realSubmit = form.submit; + try { + var wrappedSubmit = form.submit = function() { + save(); + form.submit = realSubmit; + form.submit(); + form.submit = wrappedSubmit; + }; + } catch(e) {} + } + } + + textarea.style.display = "none"; + var cm = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + cm.save = save; + cm.getTextArea = function() { return textarea; }; + cm.toTextArea = function() { + save(); + textarea.parentNode.removeChild(cm.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + off(textarea.form, "submit", save); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + return cm; + }; + + // STRING STREAM + + // Fed to the mode parsers, provides helper functions to make + // parsers more succinct. + + var StringStream = CodeMirror.StringStream = function(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + this.lineStart = 0; + }; + + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == this.lineStart;}, + peek: function() {return this.string.charAt(this.pos) || undefined;}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); + this.lastColumnPos = this.start; + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); + }, + indentation: function() { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); + }, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) return null; + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);}, + hideFirstChars: function(n, inner) { + this.lineStart += n; + try { return inner(); } + finally { this.lineStart -= n; } + } + }; + + // TEXTMARKERS + + // Created with markText and setBookmark methods. A TextMarker is a + // handle that can be used to clear or find a marked position in the + // document. Line objects hold arrays (markedSpans) containing + // {from, to, marker} object pointing to such marker objects, and + // indicating that such a marker is present on that line. Multiple + // lines may point to the same marker when it spans across lines. + // The spans will have null for their from/to properties when the + // marker continues beyond the start/end of the line. Markers have + // links back to the lines they currently touch. + + var TextMarker = CodeMirror.TextMarker = function(doc, type) { + this.lines = []; + this.type = type; + this.doc = doc; + }; + eventMixin(TextMarker); + + // Clear the marker. + TextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) startOperation(cm); + if (hasHandler(this, "clear")) { + var found = this.find(); + if (found) signalLater(this, "clear", found.from, found.to); + } + var min = null, max = null; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); + else if (cm) { + if (span.to != null) max = lineNo(line); + if (span.from != null) min = lineNo(line); + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span); + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + updateLineHeight(line, textHeight(cm.display)); + } + if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { + var visual = visualLine(this.lines[i]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } + + if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); + this.lines.length = 0; + this.explicitlyCleared = true; + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false; + if (cm) reCheckSelection(cm.doc); + } + if (cm) signalLater(cm, "markerCleared", cm, this); + if (withOp) endOperation(cm); + if (this.parent) this.parent.clear(); + }; + + // Find the position of the marker in the document. Returns a {from, + // to} object by default. Side can be passed to get a specific side + // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the + // Pos objects returned contain a line object, rather than a line + // number (used to prevent looking up the same line twice). + TextMarker.prototype.find = function(side, lineObj) { + if (side == null && this.type == "bookmark") side = 1; + var from, to; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from); + if (side == -1) return from; + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to); + if (side == 1) return to; + } + } + return from && {from: from, to: to}; + }; + + // Signals that the marker's widget changed, and surrounding layout + // should be recomputed. + TextMarker.prototype.changed = function() { + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) return; + runInOp(cm, function() { + var line = pos.line, lineN = lineNo(pos.line); + var view = findViewForLine(cm, lineN); + if (view) { + clearLineMeasurementCacheFor(view); + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; + } + cm.curOp.updateMaxLine = true; + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height; + widget.height = null; + var dHeight = widgetHeight(widget) - oldHeight; + if (dHeight) + updateLineHeight(line, line.height + dHeight); + } + }); + }; + + TextMarker.prototype.attachLine = function(line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); + } + this.lines.push(line); + }; + TextMarker.prototype.detachLine = function(line) { + this.lines.splice(indexOf(this.lines, line), 1); + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + } + }; + + // Collapsed markers have unique ids, in order to be able to order + // them, which is needed for uniquely determining an outer marker + // when they overlap (they may nest, but not partially overlap). + var nextMarkerId = 0; + + // Create a marker, wire it up to the right lines, and + function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) return markTextShared(doc, from, to, options, type); + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); + + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) copyObj(options, marker, false); + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + return marker; + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true; + marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true; + if (options.insertLeft) marker.widgetNode.insertLeft = true; + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + throw new Error("Inserting collapsed marker partially overlapping an existing one"); + sawCollapsedSpans = true; + } + + if (marker.addToHistory) + addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); + + var curLine = from.line, cm = doc.cm, updateMaxLine; + doc.iter(curLine, to.line + 1, function(line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + updateMaxLine = true; + if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)); + ++curLine; + }); + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { + if (lineIsHidden(doc, line)) updateLineHeight(line, 0); + }); + + if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); + + if (marker.readOnly) { + sawReadOnlySpans = true; + if (doc.history.done.length || doc.history.undone.length) + doc.clearHistory(); + } + if (marker.collapsed) { + marker.id = ++nextMarkerId; + marker.atomic = true; + } + if (cm) { + // Sync editor state + if (updateMaxLine) cm.curOp.updateMaxLine = true; + if (marker.collapsed) + regChange(cm, from.line, to.line + 1); + else if (marker.className || marker.title || marker.startStyle || marker.endStyle) + for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); + if (marker.atomic) reCheckSelection(cm.doc); + signalLater(cm, "markerAdded", cm, marker); + } + return marker; + } + + // SHARED TEXTMARKERS + + // A shared marker spans multiple linked documents. It is + // implemented as a meta-marker-object controlling multiple normal + // markers. + var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { + this.markers = markers; + this.primary = primary; + for (var i = 0; i < markers.length; ++i) + markers[i].parent = this; + }; + eventMixin(SharedTextMarker); + + SharedTextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + this.explicitlyCleared = true; + for (var i = 0; i < this.markers.length; ++i) + this.markers[i].clear(); + signalLater(this, "clear"); + }; + SharedTextMarker.prototype.find = function(side, lineObj) { + return this.primary.find(side, lineObj); + }; + + function markTextShared(doc, from, to, options, type) { + options = copyObj(options); + options.shared = false; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; + var widget = options.widgetNode; + linkedDocs(doc, function(doc) { + if (widget) options.widgetNode = widget.cloneNode(true); + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + if (doc.linked[i].isParent) return; + primary = lst(markers); + }); + return new SharedTextMarker(markers, primary); + } + + function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), + function(m) { return m.parent; }); + } + + function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); + marker.markers.push(subMark); + subMark.parent = marker; + } + } + } + + function detachSharedMarkers(markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], linked = [marker.primary.doc];; + linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j]; + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null; + marker.markers.splice(j--, 1); + } + } + } + } + + // TEXTMARKER SPANS + + function MarkedSpan(marker, from, to) { + this.marker = marker; + this.from = from; this.to = to; + } + + // Search an array of spans for a span matching the given marker. + function getMarkedSpanFor(spans, marker) { + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) return span; + } + } + // Remove a span from an array, returning undefined if no spans are + // left (we don't store arrays for lines without spans). + function removeMarkedSpan(spans, span) { + for (var r, i = 0; i < spans.length; ++i) + if (spans[i] != span) (r || (r = [])).push(spans[i]); + return r; + } + // Add a span to a line. + function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + span.marker.attachLine(line); + } + + // Used for the algorithm that adjusts markers for a change in the + // document. These functions cut an array of spans at a given + // character position, returning an array of remaining chunks (or + // undefined if nothing remains). + function markedSpansBefore(old, startCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); + (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); + } + } + return nw; + } + function markedSpansAfter(old, endCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); + (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); + } + } + return nw; + } + + // Given a change object, compute the new set of marker spans that + // cover the line in which the change took place. Removes spans + // entirely within the change, reconnects spans belonging to the + // same marker that appear on both sides of the change, and cuts off + // spans partially within the change. Returns an array of span + // arrays with one element for each line in (after) the change. + function stretchSpansOverChange(doc, change) { + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) return null; + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert); + var last = markedSpansAfter(oldLast, endCh, isInsert); + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i]; + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker); + if (!found) span.to = startCh; + else if (sameLine) span.to = found.to == null ? null : found.to + offset; + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i = 0; i < last.length; ++i) { + var span = last[i]; + if (span.to != null) span.to += offset; + if (span.from == null) { + var found = getMarkedSpanFor(first, span.marker); + if (!found) { + span.from = offset; + if (sameLine) (first || (first = [])).push(span); + } + } else { + span.from += offset; + if (sameLine) (first || (first = [])).push(span); + } + } + } + // Make sure we didn't create any zero-length spans + if (first) first = clearEmptySpans(first); + if (last && last != first) last = clearEmptySpans(last); + + var newMarkers = [first]; + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + for (var i = 0; i < first.length; ++i) + if (first[i].to == null) + (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); + for (var i = 0; i < gap; ++i) + newMarkers.push(gapMarkers); + newMarkers.push(last); + } + return newMarkers; + } + + // Remove spans that are empty and don't have a clearWhenEmpty + // option of false. + function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + spans.splice(i--, 1); + } + if (!spans.length) return null; + return spans; + } + + // Used for un/re-doing changes from the history. Combines the + // result of computing the existing spans with the set of spans that + // existed in the history (so that deleting around a span and then + // undoing brings back the span). + function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change); + var stretched = stretchSpansOverChange(doc, change); + if (!old) return stretched; + if (!stretched) return old; + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i]; + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j]; + for (var k = 0; k < oldCur.length; ++k) + if (oldCur[k].marker == span.marker) continue spans; + oldCur.push(span); + } + } else if (stretchCur) { + old[i] = stretchCur; + } + } + return old; + } + + // Used to 'clip' out readOnly ranges when making a change. + function removeReadOnlyRanges(doc, from, to) { + var markers = null; + doc.iter(from.line, to.line + 1, function(line) { + if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + (markers || (markers = [])).push(mark); + } + }); + if (!markers) return null; + var parts = [{from: from, to: to}]; + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0); + for (var j = 0; j < parts.length; ++j) { + var p = parts[j]; + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + newParts.push({from: p.from, to: m.from}); + if (dto > 0 || !mk.inclusiveRight && !dto) + newParts.push({from: m.to, to: p.to}); + parts.splice.apply(parts, newParts); + j += newParts.length - 1; + } + } + return parts; + } + + // Connect or disconnect spans from a line. + function detachMarkedSpans(line) { + var spans = line.markedSpans; + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.detachLine(line); + line.markedSpans = null; + } + function attachMarkedSpans(line, spans) { + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.attachLine(line); + line.markedSpans = spans; + } + + // Helpers used when computing which overlapping collapsed span + // counts as the larger one. + function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } + function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } + + // Returns a number indicating which of two overlapping collapsed + // spans is larger (and thus includes the other). Falls back to + // comparing ids when the spans cover exactly the same range. + function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length; + if (lenDiff != 0) return lenDiff; + var aPos = a.find(), bPos = b.find(); + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); + if (fromCmp) return -fromCmp; + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); + if (toCmp) return toCmp; + return b.id - a.id; + } + + // Find out whether a line ends or starts in a collapsed span. If + // so, return the marker for that span. + function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + found = sp.marker; + } + return found; + } + function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } + function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } + + // Test whether there exists a collapsed span that partially + // overlaps (covers the start or end, but not both) of a new span. + // Such overlap is not allowed. + function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo); + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) continue; + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; + if (fromCmp <= 0 && (cmp(found.to, from) || extraRight(sp.marker) - extraLeft(marker)) > 0 || + fromCmp >= 0 && (cmp(found.from, to) || extraLeft(sp.marker) - extraRight(marker)) < 0) + return true; + } + } + + // A visual line is a line as drawn on the screen. Folding, for + // example, can cause multiple logical lines to appear on the same + // visual line. This finds the start of the visual line that the + // given line is part of (usually that is the line itself). + function visualLine(line) { + var merged; + while (merged = collapsedSpanAtStart(line)) + line = merged.find(-1, true).line; + return line; + } + + // Returns an array of logical lines that continue the visual line + // started by the argument, or undefined if there are no such lines. + function visualLineContinued(line) { + var merged, lines; + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line; + (lines || (lines = [])).push(line); + } + return lines; + } + + // Get the line number of the start of the visual line that the + // given line number is part of. + function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) return lineN; + return lineNo(vis); + } + // Get the line number of the start of the next visual line after + // the given line. + function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) return lineN; + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) return lineN; + while (merged = collapsedSpanAtEnd(line)) + line = merged.find(1, true).line; + return lineNo(line) + 1; + } + + // Compute whether a line is hidden. Lines count as hidden when they + // are part of a visual line that starts with another line, or when + // they are entirely covered by collapsed, non-widget span. + function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) continue; + if (sp.from == null) return true; + if (sp.marker.widgetNode) continue; + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + return true; + } + } + function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true); + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); + } + if (span.marker.inclusiveRight && span.to == line.text.length) + return true; + for (var sp, i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i]; + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) return true; + } + } + + // LINE WIDGETS + + // Line widgets are block elements displayed above or below a line. + + var LineWidget = CodeMirror.LineWidget = function(cm, node, options) { + if (options) for (var opt in options) if (options.hasOwnProperty(opt)) + this[opt] = options[opt]; + this.cm = cm; + this.node = node; + }; + eventMixin(LineWidget); + + function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + addToScrollPos(cm, null, diff); + } + + LineWidget.prototype.clear = function() { + var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) return; + for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); + if (!ws.length) line.widgets = null; + var height = widgetHeight(this); + runInOp(cm, function() { + adjustScrollWhenAboveVisible(cm, line, -height); + regLineChange(cm, no, "widget"); + updateLineHeight(line, Math.max(0, line.height - height)); + }); + }; + LineWidget.prototype.changed = function() { + var oldH = this.height, cm = this.cm, line = this.line; + this.height = null; + var diff = widgetHeight(this) - oldH; + if (!diff) return; + runInOp(cm, function() { + cm.curOp.forceUpdate = true; + adjustScrollWhenAboveVisible(cm, line, diff); + updateLineHeight(line, line.height + diff); + }); + }; + + function widgetHeight(widget) { + if (widget.height != null) return widget.height; + if (!contains(document.body, widget.node)) + removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, "position: relative")); + return widget.height = widget.node.offsetHeight; + } + + function addLineWidget(cm, handle, node, options) { + var widget = new LineWidget(cm, node, options); + if (widget.noHScroll) cm.display.alignWidgets = true; + changeLine(cm, handle, "widget", function(line) { + var widgets = line.widgets || (line.widgets = []); + if (widget.insertAt == null) widgets.push(widget); + else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); + widget.line = line; + if (!lineIsHidden(cm.doc, line)) { + var aboveVisible = heightAtLine(line) < cm.doc.scrollTop; + updateLineHeight(line, line.height + widgetHeight(widget)); + if (aboveVisible) addToScrollPos(cm, null, widget.height); + cm.curOp.forceUpdate = true; + } + return true; + }); + return widget; + } + + // LINE DATA STRUCTURE + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { + this.text = text; + attachMarkedSpans(this, markedSpans); + this.height = estimateHeight ? estimateHeight(this) : 1; + }; + eventMixin(Line); + Line.prototype.lineNo = function() { return lineNo(this); }; + + // Change the content (text, markers) of a line. Automatically + // invalidates cached information and tries to re-estimate the + // line's height. + function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text; + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + if (line.order != null) line.order = null; + detachMarkedSpans(line); + attachMarkedSpans(line, markedSpans); + var estHeight = estimateHeight ? estimateHeight(line) : 1; + if (estHeight != line.height) updateLineHeight(line, estHeight); + } + + // Detach a line from the document tree and its markers. + function cleanUpLine(line) { + line.parent = null; + detachMarkedSpans(line); + } + + function extractLineClasses(type, output) { + if (type) for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) break; + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + output[prop] = lineClass[2]; + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + output[prop] += " " + lineClass[2]; + } + return type; + } + + function callBlankLine(mode, state) { + if (mode.blankLine) return mode.blankLine(state); + if (!mode.innerMode) return; + var inner = CodeMirror.innerMode(mode, state); + if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); + } + + function readToken(mode, stream, state) { + var style = mode.token(stream, state); + if (stream.pos <= stream.start) + throw new Error("Mode " + mode.name + " failed to advance stream."); + return style; + } + + // Run the given mode's parser over a line, calling f for each token. + function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans; + if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize), style; + if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false; + if (forceToEnd) processLine(cm, text, state, stream.pos); + stream.pos = text.length; + style = null; + } else { + style = extractLineClasses(readToken(mode, stream, state), lineClasses); + } + if (cm.options.addModeClass) { + var mName = CodeMirror.innerMode(mode, state).mode.name; + if (mName) style = "m-" + (style ? mName + " " + style : mName); + } + if (!flattenSpans || curStyle != style) { + if (curStart < stream.start) f(stream.start, curStyle); + curStart = stream.start; curStyle = style; + } + stream.start = stream.pos; + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 characters + var pos = Math.min(stream.pos, curStart + 50000); + f(pos, curStyle); + curStart = pos; + } + } + + // Compute a style array (an array starting with a mode generation + // -- for invalidation -- followed by pairs of end positions and + // style strings), which is used to highlight the tokens on the + // line. + function highlightLine(cm, line, state, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {}; + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, state, function(end, style) { + st.push(end, style); + }, lineClasses, forceToEnd); + + // Run overlays, adjust style array. + for (var o = 0; o < cm.state.overlays.length; ++o) { + var overlay = cm.state.overlays[o], i = 1, at = 0; + runMode(cm, line.text, overlay.mode, true, function(end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + st.splice(i, 1, end, st[i+1], i_end); + i += 2; + at = Math.min(end, i_end); + } + if (!style) return; + if (overlay.opaque) { + st.splice(start, i - start, end, "cm-overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; + } + } + }, lineClasses); + } + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; + } + + function getLineStyles(cm, line) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line))); + line.styles = result.styles; + if (result.classes) line.styleClasses = result.classes; + else if (line.styleClasses) line.styleClasses = null; + } + return line.styles; + } + + // Lightweight form of highlight -- proceed over this line and + // update state, but don't save a style array. Used for lines that + // aren't currently visible. + function processLine(cm, text, state, startAt) { + var mode = cm.doc.mode; + var stream = new StringStream(text, cm.options.tabSize); + stream.start = stream.pos = startAt || 0; + if (text == "") callBlankLine(mode, state); + while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) { + readToken(mode, stream, state); + stream.start = stream.pos; + } + } + + // Convert a style as returned by a mode (either null, or a string + // containing one or more styles) to a CSS style. This is cached, + // and also looks for line-wide styles. + var styleToClassCache = {}, styleToClassCacheWithMode = {}; + function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) return null; + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")); + } + + // Render the DOM representation of the text of a line. Also builds + // up a 'line map', which points at the DOM nodes that represent + // specific stretches of text, and is used by the measuring code. + // The returned object contains the DOM node, this map, and + // information about line-wide styles that were set by the mode. + function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: elt("pre", [content]), content: content, col: 0, pos: 0, cm: cm}; + lineView.measure = {}; + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order; + builder.pos = 0; + builder.addToken = buildToken; + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if ((ie || webkit) && cm.getOption("lineWrapping")) + builder.addToken = buildTokenSplitSpaces(builder.addToken); + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) + builder.addToken = buildTokenBadBidi(builder.addToken, order); + builder.map = []; + insertLineContent(line, builder, getLineStyles(cm, line)); + if (line.styleClasses) { + if (line.styleClasses.bgClass) + builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); + if (line.styleClasses.textClass) + builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map; + lineView.measure.cache = {}; + } else { + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); + (lineView.measure.caches || (lineView.measure.caches = [])).push({}); + } + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre); + return builder; + } + + function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + return token; + } + + // Build up the DOM representation for a single token, and add it to + // the line map. Takes care to render special characters separately. + function buildToken(builder, text, style, startStyle, endStyle, title) { + if (!text) return; + var special = builder.cm.options.specialChars, mustWrap = false; + if (!special.test(text)) { + builder.col += text.length; + var content = document.createTextNode(text); + builder.map.push(builder.pos, builder.pos + text.length, content); + if (ie_upto8) mustWrap = true; + builder.pos += text.length; + } else { + var content = document.createDocumentFragment(), pos = 0; + while (true) { + special.lastIndex = pos; + var m = special.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + var txt = document.createTextNode(text.slice(pos, pos + skipped)); + if (ie_upto8) content.appendChild(elt("span", [txt])); + else content.appendChild(txt); + builder.map.push(builder.pos, builder.pos + skipped, txt); + builder.col += skipped; + builder.pos += skipped; + } + if (!m) break; + pos += skipped + 1; + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + builder.col += tabWidth; + } else { + var txt = builder.cm.options.specialCharPlaceholder(m[0]); + if (ie_upto8) content.appendChild(elt("span", [txt])); + else content.appendChild(txt); + builder.col += 1; + } + builder.map.push(builder.pos, builder.pos + 1, txt); + builder.pos++; + } + } + if (style || startStyle || endStyle || mustWrap) { + var fullStyle = style || ""; + if (startStyle) fullStyle += startStyle; + if (endStyle) fullStyle += endStyle; + var token = elt("span", [content], fullStyle); + if (title) token.title = title; + return builder.content.appendChild(token); + } + builder.content.appendChild(content); + } + + function buildTokenSplitSpaces(inner) { + function split(old) { + var out = " "; + for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; + out += " "; + return out; + } + return function(builder, text, style, startStyle, endStyle, title) { + inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title); + }; + } + + // Work around nonsense dimensions being reported for stretches of + // right-to-left text. + function buildTokenBadBidi(inner, order) { + return function(builder, text, style, startStyle, endStyle, title) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; + for (;;) { + // Find the part that overlaps with the start of this text + for (var i = 0; i < order.length; i++) { + var part = order[i]; + if (part.to > start && part.from <= start) break; + } + if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title); + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title); + startStyle = null; + text = text.slice(part.to - start); + start = part.to; + } + }; + } + + function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode; + if (widget) { + builder.map.push(builder.pos, builder.pos + size, widget); + builder.content.appendChild(widget); + } + builder.pos += size; + } + + // Outputs a number of spans to make up a line, taking highlighting + // and marked text into account. + function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0; + if (!spans) { + for (var i = 1; i < styles.length; i+=2) + builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); + return; + } + + var len = allText.length, pos = 0, i = 1, text = "", style; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = ""; + collapsed = null; nextChange = Infinity; + var foundBookmarks = []; + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker; + if (sp.from <= pos && (sp.to == null || sp.to > pos)) { + if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } + if (m.className) spanStyle += " " + m.className; + if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; + if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle; + if (m.title && !title) title = m.title; + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + collapsed = sp; + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from; + } + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) foundBookmarks.push(m); + } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) return; + } + if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j) + buildCollapsedSpan(builder, 0, foundBookmarks[j]); + } + if (pos >= len) break; + + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title); + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} + pos = end; + spanStartStyle = ""; + } + text = allText.slice(at, at = styles[i++]); + style = interpretTokenStyle(styles[i++], builder.cm.options); + } + } + } + + // DOCUMENT DATA STRUCTURE + + // By default, updates that start and end at the beginning of a line + // are treated specially, in order to make the association of line + // widgets and marker elements with the text behave more intuitive. + function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore); + } + + // Perform a change on the document data structure. + function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null;} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); + } + + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; + + // Adjust the line structure + if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + for (var i = 0, added = []; i < text.length - 1; ++i) + added.push(new Line(text[i], spansFor(i), estimateHeight)); + update(lastLine, lastLine.text, lastSpans); + if (nlines) doc.remove(from.line, nlines); + if (added.length) doc.insert(from.line, added); + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); + } else { + for (var added = [], i = 1; i < text.length - 1; ++i) + added.push(new Line(text[i], spansFor(i), estimateHeight)); + added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + doc.insert(from.line + 1, added); + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); + doc.remove(from.line + 1, nlines); + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); + for (var i = 1, added = []; i < text.length - 1; ++i) + added.push(new Line(text[i], spansFor(i), estimateHeight)); + if (nlines > 1) doc.remove(from.line + 1, nlines - 1); + doc.insert(from.line + 1, added); + } + + signalLater(doc, "change", doc, change); + } + + // The document is represented as a BTree consisting of leaves, with + // chunk of lines in them, and branches, with up to ten leaves or + // other branch nodes below them. The top node is always a branch + // node, and is the document object itself (meaning it has + // additional methods and properties). + // + // All nodes have parent links. The tree is used both to go from + // line numbers to line objects, and to go from objects to numbers. + // It also indexes by height, and is used to convert between height + // and line object, and to find the total height of the document. + // + // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + for (var i = 0, height = 0; i < lines.length; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length; }, + // Remove the n lines at offset 'at'. + removeInner: function(at, n) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + cleanUpLine(line); + signalLater(line, "delete"); + } + this.lines.splice(at, n); + }, + // Helper used to collapse a small branch into a single leaf. + collapse: function(lines) { + lines.push.apply(lines, this.lines); + }, + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) lines[i].parent = this; + }, + // Used to iterate over a part of the tree. + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + if (op(this.lines[at])) return true; + } + }; + + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0; i < children.length; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + + BranchChunk.prototype = { + chunkSize: function() { return this.size; }, + removeInner: function(at, n) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.removeInner(at, rm); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) break; + at = 0; + } else at -= sz; + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + collapse: function(lines) { + for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); + }, + insertInner: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertInner(at, lines, height); + if (child.lines && child.lines.length > 50) { + while (child.lines.length > 50) { + var spilled = child.lines.splice(child.lines.length - 25, 25); + var newleaf = new LeafChunk(spilled); + child.height -= newleaf.height; + this.children.splice(i + 1, 0, newleaf); + newleaf.parent = this; + } + this.maybeSpill(); + } + break; + } + at -= sz; + } + }, + // When a node has grown, check whether it should be split. + maybeSpill: function() { + if (this.children.length <= 10) return; + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10); + me.parent.maybeSpill(); + }, + iterN: function(at, n, op) { + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) return true; + if ((n -= used) == 0) break; + at = 0; + } else at -= sz; + } + } + }; + + var nextDocId = 0; + var Doc = CodeMirror.Doc = function(text, mode, firstLine) { + if (!(this instanceof Doc)) return new Doc(text, mode, firstLine); + if (firstLine == null) firstLine = 0; + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); + this.first = firstLine; + this.scrollTop = this.scrollLeft = 0; + this.cantEdit = false; + this.cleanGeneration = 1; + this.frontier = firstLine; + var start = Pos(firstLine, 0); + this.sel = simpleSelection(start); + this.history = new History(null); + this.id = ++nextDocId; + this.modeOption = mode; + + if (typeof text == "string") text = splitLines(text); + updateDoc(this, {from: start, to: start, text: text}); + setSelection(this, simpleSelection(start), sel_dontScroll); + }; + + Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) this.iterN(from - this.first, to - from, op); + else this.iterN(this.first, this.first + this.size, from); + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0; + for (var i = 0; i < lines.length; ++i) height += lines[i].height; + this.insertInner(at - this.first, lines, height); + }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size); + if (lineSep === false) return lines; + return lines.join(lineSep || "\n"); + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: splitLines(code), origin: "setValue"}, true); + setSelection(this, simpleSelection(top)); + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from); + to = to ? clipPos(this, to) : from; + replaceRange(this, code, from, to, origin); + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); + if (lineSep === false) return lines; + return lines.join(lineSep || "\n"); + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, + + getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, + getLineNumber: function(line) {return lineNo(line);}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") line = getLine(this, line); + return visualLine(line); + }, + + lineCount: function() {return this.size;}, + firstLine: function() {return this.first;}, + lastLine: function() {return this.first + this.size - 1;}, + + clipPos: function(pos) {return clipPos(this, pos);}, + + getCursor: function(start) { + var range = this.sel.primary(), pos; + if (start == null || start == "head") pos = range.head; + else if (start == "anchor") pos = range.anchor; + else if (start == "end" || start == "to" || start === false) pos = range.to(); + else pos = range.from(); + return pos; + }, + listSelections: function() { return this.sel.ranges; }, + somethingSelected: function() {return this.sel.somethingSelected();}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads, options)); + }), + extendSelectionsBy: docMethodOp(function(f, options) { + extendSelections(this, map(this.sel.ranges, f), options); + }), + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) return; + for (var i = 0, out = []; i < ranges.length; i++) + out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head)); + if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); + setSelection(this, normalizeSelection(out, primary), options); + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); + }), + + getSelection: function(lineSep) { + var ranges = this.sel.ranges, lines; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + lines = lines ? lines.concat(sel) : sel; + } + if (lineSep === false) return lines; + else return lines.join(lineSep || "\n"); + }, + getSelections: function(lineSep) { + var parts = [], ranges = this.sel.ranges; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) sel = sel.join(lineSep || "\n"); + parts[i] = sel; + } + return parts; + }, + replaceSelection: function(code, collapse, origin) { + var dup = []; + for (var i = 0; i < this.sel.ranges.length; i++) + dup[i] = code; + this.replaceSelections(dup, collapse, origin || "+input"); + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var changes = [], sel = this.sel; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i = changes.length - 1; i >= 0; i--) + makeChange(this, changes[i]); + if (newSel) setSelectionReplaceHistory(this, newSel); + else if (this.cm) ensureCursorVisible(this.cm); + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend;}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; + for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; + return {undo: done, redo: undone}; + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration);}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true); + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + this.history.lastOp = this.history.lastOrigin = null; + return this.history.generation; + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration); + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)}; + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration); + hist.done = copyHistoryArray(histData.done.slice(0), null, true); + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); + }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, "range"); + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared}; + pos = clipPos(this, pos); + return markText(this, pos, pos, realOpts, "bookmark"); + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos); + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + markers.push(span.marker.parent || span.marker); + } + return markers; + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo = from.line; + this.iter(from.line, to.line + 1, function(line) { + var spans = line.markedSpans; + if (spans) for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(lineNo == from.line && from.ch > span.to || + span.from == null && lineNo != from.line|| + lineNo == to.line && span.from > to.ch) && + (!filter || filter(span.marker))) + found.push(span.marker.parent || span.marker); + } + ++lineNo; + }); + return found; + }, + getAllMarks: function() { + var markers = []; + this.iter(function(line) { + var sps = line.markedSpans; + if (sps) for (var i = 0; i < sps.length; ++i) + if (sps[i].from != null) markers.push(sps[i].marker); + }); + return markers; + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first; + this.iter(function(line) { + var sz = line.text.length + 1; + if (sz > off) { ch = off; return true; } + off -= sz; + ++lineNo; + }); + return clipPos(this, Pos(lineNo, ch)); + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords); + var index = coords.ch; + if (coords.line < this.first || coords.ch < 0) return 0; + this.iter(this.first, coords.line, function (line) { + index += line.text.length + 1; + }); + return index; + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; + doc.sel = this.sel; + doc.extend = false; + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth; + doc.setHistory(this.getHistory()); + } + return doc; + }, + + linkedDoc: function(options) { + if (!options) options = {}; + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) from = options.from; + if (options.to != null && options.to < to) to = options.to; + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from); + if (options.sharedHist) copy.history = this.history; + (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; + copySharedMarkers(copy, findSharedMarkers(this)); + return copy; + }, + unlinkDoc: function(other) { + if (other instanceof CodeMirror) other = other.doc; + if (this.linked) for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) continue; + this.linked.splice(i, 1); + other.unlinkDoc(this); + detachSharedMarkers(findSharedMarkers(this)); + break; + } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id]; + linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); + other.history = new History(null); + other.history.done = copyHistoryArray(this.history.done, splitIds); + other.history.undone = copyHistoryArray(this.history.undone, splitIds); + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, + + getMode: function() {return this.mode;}, + getEditor: function() {return this.cm;} + }); + + // Public alias. + Doc.prototype.eachLine = Doc.prototype.iter; + + // Set up methods on CodeMirror's prototype to redirect to the editor's document. + var dontDelegate = "iter insert remove copy getEditor".split(" "); + for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments);}; + })(Doc.prototype[prop]); + + eventMixin(Doc); + + // Call f for all linked documents. + function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) continue; + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) continue; + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } + } + propagate(doc, null, true); + } + + // Attach a document to an editor. + function attachDoc(cm, doc) { + if (doc.cm) throw new Error("This document is already in use."); + cm.doc = doc; + doc.cm = cm; + estimateLineHeights(cm); + loadMode(cm); + if (!cm.options.lineWrapping) findMaxLine(cm); + cm.options.mode = doc.modeOption; + regChange(cm); + } + + // LINE UTILITIES + + // Find the line object corresponding to the given line number. + function getLine(doc, n) { + n -= doc.first; + if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); + for (var chunk = doc; !chunk.lines;) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break; } + n -= sz; + } + } + return chunk.lines[n]; + } + + // Get the part of a document between two positions, as an array of + // strings. + function getBetween(doc, start, end) { + var out = [], n = start.line; + doc.iter(start.line, end.line + 1, function(line) { + var text = line.text; + if (n == end.line) text = text.slice(0, end.ch); + if (n == start.line) text = text.slice(start.ch); + out.push(text); + ++n; + }); + return out; + } + // Get the lines between from and to, as array of strings. + function getLines(doc, from, to) { + var out = []; + doc.iter(from, to, function(line) { out.push(line.text); }); + return out; + } + + // Update the height of a line, propagating the height change + // upwards to parent nodes. + function updateLineHeight(line, height) { + var diff = height - line.height; + if (diff) for (var n = line; n; n = n.parent) n.height += diff; + } + + // Given a line object, find its line number by walking up through + // its parent links. + function lineNo(line) { + if (line.parent == null) return null; + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) break; + no += chunk.children[i].chunkSize(); + } + } + return no + cur.first; + } + + // Find the line at the given vertical position, using the height + // information in the document tree. + function lineAtHeight(chunk, h) { + var n = chunk.first; + outer: do { + for (var i = 0; i < chunk.children.length; ++i) { + var child = chunk.children[i], ch = child.height; + if (h < ch) { chunk = child; continue outer; } + h -= ch; + n += child.chunkSize(); + } + return n; + } while (!chunk.lines); + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) break; + h -= lh; + } + return n + i; + } + + + // Find the height above the given line. + function heightAtLine(lineObj) { + lineObj = visualLine(lineObj); + + var h = 0, chunk = lineObj.parent; + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i]; + if (line == lineObj) break; + else h += line.height; + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i = 0; i < p.children.length; ++i) { + var cur = p.children[i]; + if (cur == chunk) break; + else h += cur.height; + } + } + return h; + } + + // Get the bidi ordering for the given line (and cache it). Returns + // false for lines that are fully left-to-right, and an array of + // BidiSpan objects otherwise. + function getOrder(line) { + var order = line.order; + if (order == null) order = line.order = bidiOrdering(line.text); + return order; + } + + // HISTORY + + function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = []; + this.undoDepth = Infinity; + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0; + this.lastOp = null; + this.lastOrigin = this.lastSelOrigin = null; + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1; + } + + // Create a history change event from an updateDoc-style change + // object. + function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); + linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); + return histChange; + } + + // Pop all selection events off the end of a history array. Stop at + // a change event. + function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array); + if (last.ranges) array.pop(); + else break; + } + } + + // Find the top change event in the history. Pop off selection + // events that are in the way. + function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done); + return lst(hist.done); + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done); + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop(); + return lst(hist.done); + } + } + + // Register a change in the history. Merges changes that are within + // a single operation, ore are close together with an origin that + // allows merging (starting with "+") into a single event. + function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history; + hist.undone.length = 0; + var time = +new Date, cur; + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + var last = lst(cur.changes); + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change); + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)); + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done); + if (!before || !before.ranges) + pushSelectionToHistory(doc.sel, hist.done); + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; + hist.done.push(cur); + while (hist.done.length > hist.undoDepth) { + hist.done.shift(); + if (!hist.done[0].ranges) hist.done.shift(); + } + } + hist.done.push(selAfter); + hist.generation = ++hist.maxGeneration; + hist.lastModTime = hist.lastSelTime = time; + hist.lastOp = opId; + hist.lastOrigin = hist.lastSelOrigin = change.origin; + + if (!last) signal(doc, "historyAdded"); + } + + function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); + } + + // Called whenever the selection changes, sets the new selection as + // the pending selection in the history, and pushes the old pending + // selection into the 'done' array when it was significantly + // different (in number of selected ranges, emptiness, or time). + function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin; + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + hist.done[hist.done.length - 1] = sel; + else + pushSelectionToHistory(sel, hist.done); + + hist.lastSelTime = +new Date; + hist.lastSelOrigin = origin; + hist.lastOp = opId; + if (options && options.clearRedo !== false) + clearSelectionEvents(hist.undone); + } + + function pushSelectionToHistory(sel, dest) { + var top = lst(dest); + if (!(top && top.ranges && top.equals(sel))) + dest.push(sel); + } + + // Used to store marked span information in the history. + function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { + if (line.markedSpans) + (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; + ++n; + }); + } + + // When un/re-doing restores text containing marked spans, those + // that have been explicitly cleared should not be restored. + function removeClearedSpans(spans) { + if (!spans) return null; + for (var i = 0, out; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } + else if (out) out.push(spans[i]); + } + return !out ? spans : out.length ? out : null; + } + + // Retrieve and filter the old marked spans stored in a change event. + function getOldSpans(doc, change) { + var found = change["spans_" + doc.id]; + if (!found) return null; + for (var i = 0, nw = []; i < change.text.length; ++i) + nw.push(removeClearedSpans(found[i])); + return nw; + } + + // Used both to provide a JSON-safe object in .getHistory, and, when + // detaching a document, to split the history in two + function copyHistoryArray(events, newGroup, instantiateSel) { + for (var i = 0, copy = []; i < events.length; ++i) { + var event = events[i]; + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue; + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m; + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; + } + } + } + } + return copy; + } + + // Rebasing/resetting history to deal with externally-sourced changes + + function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff; + } else if (from < pos.line) { + pos.line = from; + pos.ch = 0; + } + } + + // Tries to rebase an array of history events given a change in the + // document. If the change touches the same lines as the event, the + // event, and everything 'behind' it, is discarded. If the change is + // before the event, the event's positions are updated. Uses a + // copy-on-write scheme for the positions, to avoid having to + // reallocate them all on every rebase, but also avoid problems with + // shared position objects being unsafely updated. + function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true; + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); + } + continue; + } + for (var j = 0; j < sub.changes.length; ++j) { + var cur = sub.changes[j]; + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch); + cur.to = Pos(cur.to.line + diff, cur.to.ch); + } else if (from <= cur.to.line) { + ok = false; + break; + } + } + if (!ok) { + array.splice(0, i + 1); + i = 0; + } + } + } + + function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; + rebaseHistArray(hist.done, from, to, diff); + rebaseHistArray(hist.undone, from, to, diff); + } + + // EVENT UTILITIES + + // Due to the fact that we still support jurassic IE versions, some + // compatibility wrappers are needed. + + var e_preventDefault = CodeMirror.e_preventDefault = function(e) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + }; + var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { + if (e.stopPropagation) e.stopPropagation(); + else e.cancelBubble = true; + }; + function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; + } + var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; + + function e_target(e) {return e.target || e.srcElement;} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) b = 1; + else if (e.button & 2) b = 3; + else if (e.button & 4) b = 2; + } + if (mac && e.ctrlKey && b == 1) b = 3; + return b; + } + + // EVENT HANDLING + + // Lightweight event framework. on/off also work on DOM nodes, + // registering native DOM handlers. + + var on = CodeMirror.on = function(emitter, type, f) { + if (emitter.addEventListener) + emitter.addEventListener(type, f, false); + else if (emitter.attachEvent) + emitter.attachEvent("on" + type, f); + else { + var map = emitter._handlers || (emitter._handlers = {}); + var arr = map[type] || (map[type] = []); + arr.push(f); + } + }; + + var off = CodeMirror.off = function(emitter, type, f) { + if (emitter.removeEventListener) + emitter.removeEventListener(type, f, false); + else if (emitter.detachEvent) + emitter.detachEvent("on" + type, f); + else { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + for (var i = 0; i < arr.length; ++i) + if (arr[i] == f) { arr.splice(i, 1); break; } + } + }; + + var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + var args = Array.prototype.slice.call(arguments, 2); + for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args); + }; + + // Often, we want to signal events at a point where we are in the + // middle of some work, but don't want the handler to start calling + // other methods on the editor, which might be in an inconsistent + // state or simply not expect any other events to happen. + // signalLater looks whether there are any handlers, and schedules + // them to be executed when the last operation ends, or, if no + // operation is active, when a timeout fires. + var delayedCallbacks, delayedCallbackDepth = 0; + function signalLater(emitter, type /*, values...*/) { + var arr = emitter._handlers && emitter._handlers[type]; + if (!arr) return; + var args = Array.prototype.slice.call(arguments, 2); + if (!delayedCallbacks) { + ++delayedCallbackDepth; + delayedCallbacks = []; + setTimeout(fireDelayed, 0); + } + function bnd(f) {return function(){f.apply(null, args);};}; + for (var i = 0; i < arr.length; ++i) + delayedCallbacks.push(bnd(arr[i])); + } + + function fireDelayed() { + --delayedCallbackDepth; + var delayed = delayedCallbacks; + delayedCallbacks = null; + for (var i = 0; i < delayed.length; ++i) delayed[i](); + } + + // The DOM events that CodeMirror handles can be overridden by + // registering a (non-DOM) handler on the editor for the event name, + // and preventDefault-ing the event in that handler. + function signalDOMEvent(cm, e, override) { + signal(cm, override || e.type, cm, e); + return e_defaultPrevented(e) || e.codemirrorIgnore; + } + + function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity; + if (!arr) return; + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) + set.push(arr[i]); + } + + function hasHandler(emitter, type) { + var arr = emitter._handlers && emitter._handlers[type]; + return arr && arr.length > 0; + } + + // Add on and off methods to a constructor's prototype, to make + // registering events on such objects more convenient. + function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; + } + + // MISC UTILITIES + + // Number of pixels added to scroller and sizer to hide scrollbar + var scrollerCutOff = 30; + + // Returned or thrown by various protocols to signal 'I'm not + // handling this'. + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + + // Reused option objects for setSelection & friends + var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; + + function Delayed() {this.id = null;} + Delayed.prototype.set = function(ms, f) { + clearTimeout(this.id); + this.id = setTimeout(f, ms); + }; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + return n + (end - i); + n += nextTab - i; + n += tabSize - (n % tabSize); + i = nextTab + 1; + } + }; + + // The inverse of countColumn -- find the offset that corresponds to + // a particular column. + function findColumn(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) nextTab = string.length; + var skipped = nextTab - pos; + if (nextTab == string.length || col + skipped >= goal) + return pos + Math.min(skipped, goal - col); + col += nextTab - pos; + col += tabSize - (col % tabSize); + pos = nextTab + 1; + if (col >= goal) return pos; + } + } + + var spaceStrs = [""]; + function spaceStr(n) { + while (spaceStrs.length <= n) + spaceStrs.push(lst(spaceStrs) + " "); + return spaceStrs[n]; + } + + function lst(arr) { return arr[arr.length-1]; } + + var selectInput = function(node) { node.select(); }; + if (ios) // Mobile Safari apparently has a bug where select() is broken. + selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; + else if (ie) // Suppress mysterious IE10 errors + selectInput = function(node) { try { node.select(); } catch(_e) {} }; + + function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + if (array[i] == elt) return i; + return -1; + } + if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); }; + function map(array, f) { + var out = []; + for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); + return out; + } + if ([].map) map = function(array, f) { return array.map(f); }; + + function createObj(base, props) { + var inst; + if (Object.create) { + inst = Object.create(base); + } else { + var ctor = function() {}; + ctor.prototype = base; + inst = new ctor(); + } + if (props) copyObj(props, inst); + return inst; + }; + + function copyObj(obj, target, overwrite) { + if (!target) target = {}; + for (var prop in obj) + if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + target[prop] = obj[prop]; + return target; + } + + function bind(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function(){return f.apply(null, args);}; + } + + var nonASCIISingleCaseWordChar = /[\u00df\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + var isWordChar = CodeMirror.isWordChar = function(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); + }; + + function isEmpty(obj) { + for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; + return true; + } + + // Extending unicode characters. A series of a non-extending char + + // any number of extending chars is treated as a single unit as far + // as editing and measuring is concerned. This is not fully correct, + // since some scripts/fonts/browsers also treat other configurations + // of code points as a group. + var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; + function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } + + // DOM UTILITIES + + function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) e.className = className; + if (style) e.style.cssText = style; + if (typeof content == "string") e.appendChild(document.createTextNode(content)); + else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); + return e; + } + + var range; + if (document.createRange) range = function(node, start, end) { + var r = document.createRange(); + r.setEnd(node, end); + r.setStart(node, start); + return r; + }; + else range = function(node, start, end) { + var r = document.body.createTextRange(); + r.moveToElementText(node.parentNode); + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r; + }; + + function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + e.removeChild(e.firstChild); + return e; + } + + function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e); + } + + function contains(parent, child) { + if (parent.contains) + return parent.contains(child); + while (child = child.parentNode) + if (child == parent) return true; + } + + function activeElt() { return document.activeElement; } + // Older versions of IE throws unspecified error when touching + // document.activeElement in some cases (during loading, in iframe) + if (ie_upto10) activeElt = function() { + try { return document.activeElement; } + catch(e) { return document.body; } + }; + + function classTest(cls) { return new RegExp("\\b" + cls + "\\b\\s*"); } + function rmClass(node, cls) { + var test = classTest(cls); + if (test.test(node.className)) node.className = node.className.replace(test, ""); + } + function addClass(node, cls) { + if (!classTest(cls).test(node.className)) node.className += " " + cls; + } + function joinClasses(a, b) { + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; + return b; + } + + // FEATURE DETECTION + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie_upto8) return false; + var div = elt('div'); + return "draggable" in div || "dragDrop" in div; + }(); + + var knownScrollbarWidth; + function scrollbarWidth(measure) { + if (knownScrollbarWidth != null) return knownScrollbarWidth; + var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll"); + removeChildrenAndAdd(measure, test); + if (test.offsetWidth) + knownScrollbarWidth = test.offsetHeight - test.clientHeight; + return knownScrollbarWidth || 0; + } + + var zwspSupported; + function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !ie_upto7; + } + if (zwspSupported) return elt("span", "\u200b"); + else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + } + + // Feature-detect IE's crummy client rect reporting for bidi text + var badBidiRects; + function hasBadBidiRects(measure) { + if (badBidiRects != null) return badBidiRects; + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); + var r0 = range(txt, 0, 1).getBoundingClientRect(); + if (r0.left == r0.right) return false; + var r1 = range(txt, 1, 2).getBoundingClientRect(); + return badBidiRects = (r1.right - r0.right < 3); + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLines = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) nl = string.length; + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result; + } : function(string){return string.split(/\r\n?|\n/);}; + + var hasSelection = window.getSelection ? function(te) { + try { return te.selectionStart != te.selectionEnd; } + catch(e) { return false; } + } : function(te) { + try {var range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) return false; + return range.compareEndPoints("StartToEnd", range) != 0; + }; + + var hasCopyEvent = (function() { + var e = elt("div"); + if ("oncopy" in e) return true; + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function"; + })(); + + // KEY NAMES + + var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"}; + CodeMirror.keyNames = keyNames; + (function() { + // Number keys + for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); + // Alphabetic keys + for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); + // Function keys + for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; + })(); + + // BIDI HELPERS + + function iterateBidiSections(order, from, to, f) { + if (!order) return f(from, to, "ltr"); + var found = false; + for (var i = 0; i < order.length; ++i) { + var part = order[i]; + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); + found = true; + } + } + if (!found) f(from, to, "ltr"); + } + + function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } + function bidiRight(part) { return part.level % 2 ? part.from : part.to; } + + function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } + function lineRight(line) { + var order = getOrder(line); + if (!order) return line.text.length; + return bidiRight(lst(order)); + } + + function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLine(line); + if (visual != line) lineN = lineNo(visual); + var order = getOrder(visual); + var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); + return Pos(lineN, ch); + } + function lineEnd(cm, lineN) { + var merged, line = getLine(cm.doc, lineN); + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line; + lineN = null; + } + var order = getOrder(line); + var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); + return Pos(lineN == null ? lineNo(line) : lineN, ch); + } + + function compareBidiLevel(order, a, b) { + var linedir = order[0].level; + if (a == linedir) return true; + if (b == linedir) return false; + return a < b; + } + var bidiOther; + function getBidiPartAt(order, pos) { + bidiOther = null; + for (var i = 0, found; i < order.length; ++i) { + var cur = order[i]; + if (cur.from < pos && cur.to > pos) return i; + if ((cur.from == pos || cur.to == pos)) { + if (found == null) { + found = i; + } else if (compareBidiLevel(order, cur.level, order[found].level)) { + if (cur.from != cur.to) bidiOther = found; + return i; + } else { + if (cur.from != cur.to) bidiOther = i; + return found; + } + } + } + return found; + } + + function moveInLine(line, pos, dir, byUnit) { + if (!byUnit) return pos + dir; + do pos += dir; + while (pos > 0 && isExtendingChar(line.text.charAt(pos))); + return pos; + } + + // This is needed in order to move 'visually' through bi-directional + // text -- i.e., pressing left should make the cursor go left, even + // when in RTL text. The tricky part is the 'jumps', where RTL and + // LTR text touch each other. This often requires the cursor offset + // to move more than one unit, in order to visually move one unit. + function moveVisually(line, start, dir, byUnit) { + var bidi = getOrder(line); + if (!bidi) return moveLogically(line, start, dir, byUnit); + var pos = getBidiPartAt(bidi, start), part = bidi[pos]; + var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); + + for (;;) { + if (target > part.from && target < part.to) return target; + if (target == part.from || target == part.to) { + if (getBidiPartAt(bidi, target) == pos) return target; + part = bidi[pos += dir]; + return (dir > 0) == part.level % 2 ? part.to : part.from; + } else { + part = bidi[pos += dir]; + if (!part) return null; + if ((dir > 0) == part.level % 2) + target = moveInLine(line, part.to, -1, byUnit); + else + target = moveInLine(line, part.from, 1, byUnit); + } + } + } + + function moveLogically(line, start, dir, byUnit) { + var target = start + dir; + if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; + return target < 0 || target > line.text.length ? null : target; + } + + // Bidirectional ordering algorithm + // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm + // that this (partially) implements. + + // One-char codes used for character types: + // L (L): Left-to-Right + // R (R): Right-to-Left + // r (AL): Right-to-Left Arabic + // 1 (EN): European Number + // + (ES): European Number Separator + // % (ET): European Number Terminator + // n (AN): Arabic Number + // , (CS): Common Number Separator + // m (NSM): Non-Spacing Mark + // b (BN): Boundary Neutral + // s (B): Paragraph Separator + // t (S): Segment Separator + // w (WS): Whitespace + // N (ON): Other Neutrals + + // Returns null if characters are ordered as they appear + // (left-to-right), or an array of sections ({from, to, level} + // objects) in the order in which they occur visually. + var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; + // Character types for codepoints 0x600 to 0x6ff + var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; + function charType(code) { + if (code <= 0xf7) return lowTypes.charAt(code); + else if (0x590 <= code && code <= 0x5f4) return "R"; + else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); + else if (0x6ee <= code && code <= 0x8ac) return "r"; + else if (0x2000 <= code && code <= 0x200b) return "w"; + else if (code == 0x200c) return "b"; + else return "L"; + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; + // Browsers seem to always treat the boundaries of block elements as being L. + var outerType = "L"; + + function BidiSpan(level, from, to) { + this.level = level; + this.from = from; this.to = to; + } + + return function(str) { + if (!bidiRE.test(str)) return false; + var len = str.length, types = []; + for (var i = 0, type; i < len; ++i) + types.push(type = charType(str.charCodeAt(i))); + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i = 0, prev = outerType; i < len; ++i) { + var type = types[i]; + if (type == "m") types[i] = prev; + else prev = type; + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (type == "1" && cur == "r") types[i] = "n"; + else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i = 1, prev = types[0]; i < len - 1; ++i) { + var type = types[i]; + if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; + else if (type == "," && prev == types[i+1] && + (prev == "1" || prev == "n")) types[i] = prev; + prev = type; + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i = 0; i < len; ++i) { + var type = types[i]; + if (type == ",") types[i] = "N"; + else if (type == "%") { + for (var end = i + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (cur == "L" && type == "1") types[i] = "L"; + else if (isStrong.test(type)) cur = type; + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i = 0; i < len; ++i) { + if (isNeutral.test(types[i])) { + for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} + var before = (i ? types[i-1] : outerType) == "L"; + var after = (end < len ? types[end] : outerType) == "L"; + var replace = before || after ? "L" : "R"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m; + for (var i = 0; i < len;) { + if (countsAsLeft.test(types[i])) { + var start = i; + for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} + order.push(new BidiSpan(0, start, i)); + } else { + var pos = i, at = order.length; + for (++i; i < len && types[i] != "L"; ++i) {} + for (var j = pos; j < i;) { + if (countsAsNum.test(types[j])) { + if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); + var nstart = j; + for (++j; j < i && countsAsNum.test(types[j]); ++j) {} + order.splice(at, 0, new BidiSpan(2, nstart, j)); + pos = j; + } else ++j; + } + if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length; + order.unshift(new BidiSpan(0, 0, m[0].length)); + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length; + order.push(new BidiSpan(0, len - m[0].length, len)); + } + if (order[0].level != lst(order).level) + order.push(new BidiSpan(order[0].level, len, len)); + + return order; + }; + })(); + + // THE END + + CodeMirror.version = "4.1.0"; + + return CodeMirror; +}); diff --git a/v3/js/codemirror/python.js b/v3/js/codemirror/python.js new file mode 100644 index 000000000..f5530bcfd --- /dev/null +++ b/v3/js/codemirror/python.js @@ -0,0 +1,388 @@ +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + + +CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = 'error'; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var singleOperators = parserConf.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"); + var singleDelimiters = parserConf.singleDelimiters || new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); + var doubleOperators = parserConf.doubleOperators || new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); + var doubleDelimiters = parserConf.doubleDelimiters || new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); + var tripleDelimiters = parserConf.tripleDelimiters || new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); + var identifiers = parserConf.identifiers|| new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); + var hangingIndent = parserConf.hangingIndent || parserConf.indentUnit; + + var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']); + var commonkeywords = ['as', 'assert', 'break', 'class', 'continue', + 'def', 'del', 'elif', 'else', 'except', 'finally', + 'for', 'from', 'global', 'if', 'import', + 'lambda', 'pass', 'raise', 'return', + 'try', 'while', 'with', 'yield']; + var commonBuiltins = ['abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'callable', 'chr', + 'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', + 'enumerate', 'eval', 'filter', 'float', 'format', 'frozenset', + 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', + 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', + 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', + 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', + 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', + 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', + 'type', 'vars', 'zip', '__import__', 'NotImplemented', + 'Ellipsis', '__debug__']; + var py2 = {'builtins': ['apply', 'basestring', 'buffer', 'cmp', 'coerce', 'execfile', + 'file', 'intern', 'long', 'raw_input', 'reduce', 'reload', + 'unichr', 'unicode', 'xrange', 'False', 'True', 'None'], + 'keywords': ['exec', 'print']}; + var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'], + 'keywords': ['nonlocal', 'False', 'True', 'None']}; + + if(parserConf.extra_keywords != undefined){ + commonkeywords = commonkeywords.concat(parserConf.extra_keywords); + } + if(parserConf.extra_builtins != undefined){ + commonBuiltins = commonBuiltins.concat(parserConf.extra_builtins); + } + if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) { + commonkeywords = commonkeywords.concat(py3.keywords); + commonBuiltins = commonBuiltins.concat(py3.builtins); + var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i"); + } else { + commonkeywords = commonkeywords.concat(py2.keywords); + commonBuiltins = commonBuiltins.concat(py2.builtins); + var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); + } + var keywords = wordRegexp(commonkeywords); + var builtins = wordRegexp(commonBuiltins); + + var indentInfo = null; + + // tokenizers + function tokenBase(stream, state) { + // Handle scope changes + if (stream.sol()) { + var scopeOffset = state.scopes[0].offset; + if (stream.eatSpace()) { + var lineOffset = stream.indentation(); + if (lineOffset > scopeOffset) { + indentInfo = 'indent'; + } else if (lineOffset < scopeOffset) { + indentInfo = 'dedent'; + } + return null; + } else { + if (scopeOffset > 0) { + dedent(stream, state); + } + } + } + if (stream.eatSpace()) { + return null; + } + + var ch = stream.peek(); + + // Handle Comments + if (ch === '#') { + stream.skipToEnd(); + return 'comment'; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.]/, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return 'number'; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } + // Binary + if (stream.match(/^0b[01]+/i)) { intLiteral = true; } + // Octal + if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } + // Decimal + if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return 'number'; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + // Handle operators and Delimiters + if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { + return null; + } + if (stream.match(doubleOperators) + || stream.match(singleOperators) + || stream.match(wordOperators)) { + return 'operator'; + } + if (stream.match(singleDelimiters)) { + return null; + } + + if (stream.match(keywords)) { + return 'keyword'; + } + + if (stream.match(builtins)) { + return 'builtin'; + } + + if (stream.match(/^(self|cls)\b/)) { + return "variable-2"; + } + + if (stream.match(identifiers)) { + if (state.lastToken == 'def' || state.lastToken == 'class') { + return 'def'; + } + return 'variable'; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { + delimiter = delimiter.substr(1); + } + var singleline = delimiter.length == 1; + var OUTCLASS = 'string'; + + function tokenString(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"\\]/); + if (stream.eat('\\')) { + stream.next(); + if (singleline && stream.eol()) { + return OUTCLASS; + } + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) { + return ERRORCLASS; + } else { + state.tokenize = tokenBase; + } + } + return OUTCLASS; + } + tokenString.isString = true; + return tokenString; + } + + function indent(stream, state, type) { + type = type || 'py'; + var indentUnit = 0; + if (type === 'py') { + if (state.scopes[0].type !== 'py') { + state.scopes[0].offset = stream.indentation(); + return; + } + for (var i = 0; i < state.scopes.length; ++i) { + if (state.scopes[i].type === 'py') { + indentUnit = state.scopes[i].offset + conf.indentUnit; + break; + } + } + } else if (stream.match(/\s*($|#)/, false)) { + // An open paren/bracket/brace with only space or comments after it + // on the line will indent the next line a fixed amount, to make it + // easier to put arguments, list items, etc. on their own lines. + indentUnit = stream.indentation() + hangingIndent; + } else { + indentUnit = stream.column() + stream.current().length; + } + state.scopes.unshift({ + offset: indentUnit, + type: type + }); + } + + function dedent(stream, state, type) { + type = type || 'py'; + if (state.scopes.length == 1) return; + if (state.scopes[0].type === 'py') { + var _indent = stream.indentation(); + var _indent_index = -1; + for (var i = 0; i < state.scopes.length; ++i) { + if (_indent === state.scopes[i].offset) { + _indent_index = i; + break; + } + } + if (_indent_index === -1) { + return true; + } + while (state.scopes[0].offset !== _indent) { + state.scopes.shift(); + } + return false; + } else { + if (type === 'py') { + state.scopes[0].offset = stream.indentation(); + return false; + } else { + if (state.scopes[0].type != type) { + return true; + } + state.scopes.shift(); + return false; + } + } + } + + function tokenLexer(stream, state) { + indentInfo = null; + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle '.' connected identifiers + if (current === '.') { + style = stream.match(identifiers, false) ? null : ERRORCLASS; + if (style === null && state.lastStyle === 'meta') { + // Apply 'meta' style to '.' connected identifiers when + // appropriate. + style = 'meta'; + } + return style; + } + + // Handle decorators + if (current === '@') { + return stream.match(identifiers, false) ? 'meta' : ERRORCLASS; + } + + if ((style === 'variable' || style === 'builtin') + && state.lastStyle === 'meta') { + style = 'meta'; + } + + // Handle scope changes. + if (current === 'pass' || current === 'return') { + state.dedent += 1; + } + if (current === 'lambda') state.lambda = true; + if ((current === ':' && !state.lambda && state.scopes[0].type == 'py') + || indentInfo === 'indent') { + indent(stream, state); + } + var delimiter_index = '[({'.indexOf(current); + if (delimiter_index !== -1) { + indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1)); + } + if (indentInfo === 'dedent') { + if (dedent(stream, state)) { + return ERRORCLASS; + } + } + delimiter_index = '])}'.indexOf(current); + if (delimiter_index !== -1) { + if (dedent(stream, state, current)) { + return ERRORCLASS; + } + } + if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'py') { + if (state.scopes.length > 1) state.scopes.shift(); + state.dedent -= 1; + } + + return style; + } + + var external = { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + scopes: [{offset:basecolumn || 0, type:'py'}], + lastStyle: null, + lastToken: null, + lambda: false, + dedent: 0 + }; + }, + + token: function(stream, state) { + var style = tokenLexer(stream, state); + + state.lastStyle = style; + + var current = stream.current(); + if (current && style) { + state.lastToken = current; + } + + if (stream.eol() && state.lambda) { + state.lambda = false; + } + return style; + }, + + indent: function(state) { + if (state.tokenize != tokenBase) { + return state.tokenize.isString ? CodeMirror.Pass : 0; + } + + return state.scopes[0].offset; + }, + + lineComment: "#", + fold: "indent" + }; + return external; +}); + +CodeMirror.defineMIME("text/x-python", "python"); + +var words = function(str){return str.split(' ');}; + +CodeMirror.defineMIME("text/x-cython", { + name: "python", + extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ + "extern gil include nogil property public"+ + "readonly struct union DEF IF ELIF ELSE") +}); + +}); diff --git a/v3/js/composingprograms.js b/v3/js/composingprograms.js new file mode 100644 index 000000000..61c540d5a --- /dev/null +++ b/v3/js/composingprograms.js @@ -0,0 +1,212 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// simplified version of opt-frontend.js for ../composingprograms.html + + +// Pre-reqs: +// - pytutor.js +// - jquery.ba-bbq.min.js +// - jquery.ba-dotimeout.min.js // for event debouncing: http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/ +// - opt-frontend-common.js +// - js/togetherjs/togetherjs-min.js +// should all be imported BEFORE this file + + +var originFrontendJsFile = 'composingprograms.js'; + + +function TogetherjsReadyHandler() { + populateTogetherJsShareUrl(); + updateChatName(); +} + +function TogetherjsCloseHandler() { + // NOP +} + + +function executeCode(forceStartingInstr, forceRawInputLst) { + if (forceRawInputLst !== undefined) { + rawInputLst = forceRawInputLst; // UGLY global across modules, FIXME + } + + backend_script = python3_backend_script; // Python 3 + + var backendOptionsObj = {cumulative_mode: ($('#cumulativeModeSelector').val() == 'true'), + heap_primitives: false, + show_only_outputs: false, + py_crazy_mode: false, + origin: originFrontendJsFile}; + + var surveyObj = getSurveyObject(); + if (surveyObj) { + backendOptionsObj.survey = surveyObj; + } + + var startingInstruction = forceStartingInstr ? forceStartingInstr : 0; + + var frontendOptionsObj = {startingInstruction: startingInstruction, + executeCodeWithRawInputFunc: executeCodeWithRawInput, + updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');}, + compactFuncLabels: true, + showAllFrameLabels: true, + } + + executePythonCode(pyInputGetValue(), + backend_script, backendOptionsObj, + frontendOptionsObj, + 'pyOutputPane', + optFinishSuccessfulExecution, handleUncaughtExceptionFunc); +} + +$(document).ready(function() { + setSurveyHTML(); + $('#signoutButton').click(signout); + + genericOptFrontendReady(); // initialize at the very end +}); + + +var chatDisplayName = null; // sign in with Google account to get your real chat name + +// for Google+ Web signin: +// https://developers.google.com/+/web/signin/add-button +function signinCallback(authResult) { + if (authResult) { + if (authResult['error'] == undefined){ + + $("#signinButton").hide(); + $("#loggedInDiv").show(); + + // This sample assumes a client object has been created. + // To learn more about creating a client, check out the starter: + // https://developers.google.com/+/quickstart/javascript + gapi.client.load('plus','v1', function() { + var request = gapi.client.plus.people.get({ + 'userId': 'me' + }); + request.execute(function(resp) { + // From https://developers.google.com/+/web/people/#retrieve_an_authenticated_users_email_address + + // Filter the emails object to find the user's primary account, which might + // not always be the first in the array. The filter() method supports IE9+. + var email = resp['emails'].filter(function(v) { + return v.type === 'account'; // Filter out the primary email + })[0].value; // get the email from the filtered results, should always be defined. + + //alert('Real name: "' + resp.displayName + '", Email addr: "' + email + '"'); + + // if we can actually grab the display name (e.g., from a + // Google+ account), then use it + if (resp.displayName) { + chatDisplayName = resp.displayName; + updateChatName(); + } + + // otherwise try to look up the email address on the server to + // find a real name mapping on the server + else if (email) { + $.get('name_lookup.py', + {email : email}, + function(data) { + // fall back on email address + chatDisplayName = data.name ? data.name + ' [staff]': email; + updateChatName(); + }, + "json"); + } + }); + }); + + redrawConnectors(); // update all arrows at the end + + } else { + console.log('signinCallback: error occurred'); + } + } else { + console.log('signinCallback: empty authResult'); // Something went wrong + } +} + +function updateChatName() { + if (chatDisplayName) { + $("#loggedInNameDisplay").html("Welcome, " + chatDisplayName); + + if (TogetherJS.running) { + var p = TogetherJS.require("peers"); + p.Self.update({name: chatDisplayName}); + console.log('updateChatName:', p.Self.name); + } + + redrawConnectors(); // update all arrows at the end + } +} + +// adapted from https://developers.google.com/+/quickstart/javascript +/** + * Calls the OAuth2 endpoint to disconnect the app for the user. + */ +function signout() { + chatDisplayName = null; + if (supports_html5_storage()) { + localStorage.removeItem('togetherjs.settings.name'); // purge from cache + + // restore the default name + if (TogetherJS.running) { + var defaultName = $.parseJSON(localStorage.getItem('togetherjs.settings.defaultName')); + var p = TogetherJS.require("peers"); + p.Self.update({name: defaultName}); + } + } + + var tok = gapi.auth.getToken(); + if (tok) { + // Revoke the access token. + $.ajax({ + type: 'GET', + url: 'https://accounts.google.com/o/oauth2/revoke?token=' + + tok.access_token, + async: false, + contentType: 'application/json', + dataType: 'jsonp', + success: function(result) { + $('#signinButton').show(); + $('#loggedInDiv').hide(); + redrawConnectors(); // update all arrows at the end + }, + error: function(e) { + console.log(e); + } + }); + } + else { + console.log('signout failed :('); + } +} diff --git a/v3/js/csc108h.js b/v3/js/csc108h.js new file mode 100644 index 000000000..b69e21185 --- /dev/null +++ b/v3/js/csc108h.js @@ -0,0 +1,92 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// simplified version of opt-frontend.js for ../csc108h.html +// for Paul Gries and Jennifer Campbell at Toronto + + +// Pre-reqs: +// - pytutor.js +// - jquery.ba-bbq.min.js +// - jquery.ba-dotimeout.min.js // for event debouncing: http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/ +// - opt-frontend-common.js +// - js/togetherjs/togetherjs-min.js +// should all be imported BEFORE this file + + +var originFrontendJsFile = 'csc108h.js'; + +function TogetherjsReadyHandler() { + populateTogetherJsShareUrl(); +} + +function TogetherjsCloseHandler() { + // NOP +} + + +function executeCode(forceStartingInstr, forceRawInputLst) { + if (forceRawInputLst !== undefined) { + rawInputLst = forceRawInputLst; // UGLY global across modules, FIXME + } + + backend_script = python3_backend_script; // Python 3 + + var backendOptionsObj = {cumulative_mode: false, + heap_primitives: true, // render all objects on the heap + show_only_outputs: false, + py_crazy_mode: false, + origin: originFrontendJsFile}; + + var surveyObj = getSurveyObject(); + if (surveyObj) { + backendOptionsObj.survey = surveyObj; + } + + var startingInstruction = forceStartingInstr ? forceStartingInstr : 0; + + var frontendOptionsObj = {startingInstruction: startingInstruction, + executeCodeWithRawInputFunc: executeCodeWithRawInput, + disableHeapNesting: true, // render all objects on the heap + drawParentPointers: true, // show environment parent pointers + textualMemoryLabels: true, // use text labels for references + updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');}, + } + + executePythonCode(pyInputGetValue(), + backend_script, backendOptionsObj, + frontendOptionsObj, + 'pyOutputPane', + optFinishSuccessfulExecution, handleUncaughtExceptionFunc); +} + +$(document).ready(function() { + setSurveyHTML(); + genericOptFrontendReady(); // initialize at the very end +}); diff --git a/v3/js/d3.v2.min.js b/v3/js/d3.v2.min.js new file mode 100644 index 000000000..2a1e13110 --- /dev/null +++ b/v3/js/d3.v2.min.js @@ -0,0 +1,4 @@ +(function(){function d(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function f(a){var b=-1,c=a.length,d=[];while(++b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function H(a,b){var c=Math.pow(10,Math.abs(8-b)*3);return{scale:b>8?function(a){return a/c}:function(a){return a*c},symbol:a}}function N(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function O(a){return function(b){return 1-a(1-b)}}function P(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function Q(a){return a}function R(a){return function(b){return Math.pow(b,a)}}function S(a){return 1-Math.cos(a*Math.PI/2)}function T(a){return Math.pow(2,10*(a-1))}function U(a){return 1-Math.sqrt(1-a*a)}function V(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function W(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function X(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function Y(){d3.event.stopPropagation(),d3.event.preventDefault()}function Z(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function $(a){var b=new z,c=0,d=arguments.length;while(++c360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,bd(g(a+120),g(a),g(a-120))}function bn(a){return i(a,bt),a}function bu(a){return function(){return bo(a,this)}}function bv(a){return function(){return bp(a,this)}}function bw(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=v(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=v(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bx(a){return{__data__:a}}function by(a){return function(){return bs(this,a)}}function bz(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bA(a,b){for(var c=0,d=a.length;cb?q():(m.active=b,d.forEach(function(b,c){(c=c.call(a,n,h))&&j.push(c)}),e.start.call(a,n,h),p(f)||d3.timer(p,0,c),1)}function p(c){if(m.active!==b)return q();var d=(c-k)/l,g=f(d),i=j.length;while(i>0)j[--i].call(a,g);if(d>=1)return q(),bK=b,e.end.call(a,n,h),bK=0,1}function q(){return--m.count||delete a.__transition__,1}var j=[],k=a.delay,l=a.duration,m=(a=a.node).__transition__||(a.__transition__={active:0,count:0}),n=a.__data__;++m.count,k<=g?o(g):d3.timer(o,k,c)})},0,c),a}function bG(a,b,c){return c!=""&&bF}function bH(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bF:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=ba(a);return typeof b=="function"?d:b==null?bG:(b+="",e)}function bR(a){var b=bK,c=bQ,d=bO,e=bP;return bK=this.id,bQ=this.ease(),bA(this,function(b,c,d){bO=b.delay,bP=b.duration,a.call(b=b.node,b.__data__,c,d)}),bK=b,bQ=c,bO=d,bP=e,this}function bV(){var a,b=Date.now(),c=bS;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bW()-b;d>24?(isFinite(d)&&(clearTimeout(bU),bU=setTimeout(bV,d)),bT=0):(bT=1,bX(bV))}function bW(){var a=null,b=bS,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bS=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function bY(a){var b=[a.a,a.b],c=[a.c,a.d],d=b$(b),e=bZ(b,c),f=b$(b_(c,b,-e))||0;b[0]*c[1]2?cp:co,i=d?bc:bb;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return cm(a,b)},h.tickFormat=function(b){return cn(a,b)},h.nice=function(){return cg(a,ck),g()},h.copy=function(){return ci(a,b,c,d)},g()}function cj(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function ck(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function cl(a,b){var c=ce(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function cm(a,b){return d3.range.apply(d3,cl(a,b))}function cn(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(cl(a,b)[2])/Math.LN10+.01))+"f")}function co(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function cp(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=cr);if(arguments.length<1)return e;var f=Math.max(.1,a/d.ticks().length),g=b===ct?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))<=f?e(a):""}},d.copy=function(){return cq(a.copy(),b)},cj(d,a)}function cs(a){return Math.log(a<0?0:a)/Math.LN10}function ct(a){return-Math.log(a>0?0:-a)/Math.LN10}function cu(a,b){function e(b){return a(c(b))}var c=cv(b),d=cv(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return cm(e.domain(),a)},e.tickFormat=function(a){return cn(e.domain(),a)},e.nice=function(){return e.domain(cg(e.domain(),ck))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=cv(b=a),d=cv(1/b),e.domain(f)},e.copy=function(){return cu(a.copy(),b)},cj(e,a)}function cv(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cw(a,b){function f(b){return d[((c.get(b)||c.set(b,a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c=new j;var e=-1,g=d.length,h;while(++e1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function dh(a){return a.length<3?cP(a):a[0]+cV(a,dg(a))}function di(a){var b,c=-1,d=a.length,e,f;while(++c1){var d=ce(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++id&&(c=b,d=e);return c}function d_(a){return a.reduce(ea,0)}function ea(a,b){return a+b[1]}function eb(a,b){return ec(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function ec(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function ed(a){return[d3.min(a),d3.max(a)]}function ee(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=ei,a.nodes=function(b){return ej=!0,(a.nodes=a)(b)},a}function ef(a){return a.children}function eg(a){return a.value}function eh(a,b){return b.value-a.value}function ei(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function ek(a,b){return a.value-b.value}function el(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function em(a,b){a._pack_next=b,b._pack_prev=a}function en(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function eo(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(ep),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],et(g,h,i),l(i),el(g,i),g._pack_prev=i,el(i,h),h=g._pack_next;for(var m=3;m0&&(a=d)}return a}function eC(a,b){return a.x-b.x}function eD(a,b){return b.x-a.x}function eE(a,b){return a.depth-b.depth}function eF(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function eH(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function eI(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function eJ(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function eK(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function eL(a){return a.map(eM).join(",")}function eM(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}function eO(a,b){return function(c){return c&&a.hasOwnProperty(c.type)?a[c.type](c):b}}function eP(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function eQ(a,b){eR.hasOwnProperty(a.type)&&eR[a.type](a,b)}function eS(a,b){eQ(a.geometry,b)}function eT(a,b){for(var c=a.features,d=0,e=c.length;d0}function fg(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fh(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function fj(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.yb.y?1:a.xb.x?1:0}),bottomSite:null},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[fi[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[fi[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;dh.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;bo.y&&(p=n,n=o,o=p,t="r"),s=e.bisect(n,o),m=d.createHalfEdge(s,t),d.insert(k,m),e.endPoint(s,fi[t],r),q=e.intersect(k,m),q&&(f.del(k),f.insert(k,q,e.distance(q,n))),q=e.intersect(m,l),q&&f.insert(m,q,e.distance(q,n));else break}for(i=d.right(d.leftEnd);i!=d.rightEnd;i=d.right(i))b(i.edge)}function fk(){return{leaf:!0,nodes:[],point:null}}function fl(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&fl(a,i[0],c,d,g,h),i[1]&&fl(a,i[1],g,d,e,h),i[2]&&fl(a,i[2],c,h,g,f),i[3]&&fl(a,i[3],g,h,e,f)}}function fm(a){return{x:a[0],y:a[1]}}function fo(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function fq(a,b,c,d){var e,f,g=0,h=b.length,i=c.length;while(g=i)return-1;e=b.charCodeAt(g++);if(e==37){f=fw[b.charAt(g++)];if(!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fx(a,b,c){return fz.test(b.substring(c,c+=3))?c:-1}function fy(a,b,c){fA.lastIndex=0;var d=fA.exec(b.substring(c,c+10));return d?c+=d[0].length:-1}function fC(a,b,c){var d=fD.get(b.substring(c,c+=3).toLowerCase());return d==null?-1:(a.m=d,c)}function fE(a,b,c){fF.lastIndex=0;var d=fF.exec(b.substring(c,c+12));return d?(a.m=fG.get(d[0].toLowerCase()),c+=d[0].length):-1}function fI(a,b,c){return fq(a,fv.c.toString(),b,c)}function fJ(a,b,c){return fq(a,fv.x.toString(),b,c)}function fK(a,b,c){return fq(a,fv.X.toString(),b,c)}function fL(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+4));return d?(a.y=+d[0],c+=d[0].length):-1}function fM(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.y=fN()+ +d[0],c+=d[0].length):-1}function fN(){return~~((new Date).getFullYear()/1e3)*1e3}function fO(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.m=d[0]-1,c+=d[0].length):-1}function fP(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.d=+d[0],c+=d[0].length):-1}function fQ(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.H=+d[0],c+=d[0].length):-1}function fR(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.M=+d[0],c+=d[0].length):-1}function fS(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.S=+d[0],c+=d[0].length):-1}function fT(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+3));return d?(a.L=+d[0],c+=d[0].length):-1}function fV(a,b,c){var d=fW.get(b.substring(c,c+=2).toLowerCase());return d==null?-1:(a.p=d,c)}function fX(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(Math.abs(b)/60),e=Math.abs(b)%60;return c+fr(d)+fr(e)}function fZ(a){return a.toISOString()}function f$(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c1)while(gb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(r),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a.call(b,b[f],f)>1;c0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,k=b[g++],l,m,n=new j,o,p={};while(++h=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=200&&a<300||a===304?d:null)}},d.send(null)},d3.text=function(a,b,c){function d(a){c(a&&a.responseText)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.json=function(a,b){d3.text(a,"application/json",function(a){b(a?JSON.parse(a):null)})},d3.html=function(a,b){d3.text(a,"text/html",function(a){if(a!=null){var c=document.createRange();c.selectNode(document.body),a=c.createContextualFragment(a)}b(a)})},d3.xml=function(a,b,c){function d(a){c(a&&a.responseXML)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)};var y={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:y,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),y.hasOwnProperty(c)?{space:y[c],local:a}:a}},d3.dispatch=function(){var a=new z,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=B.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=C.get(i)||E,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a=m.scale(a),k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,C=d3.map({g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=D(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),G=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(H);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,D(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),G[8+c/3]};var I=R(2),J=R(3),K=function(){return Q},L=d3.map({linear:K,poly:R,quad:function(){return I},cubic:function(){return J},sin:function(){return S},exp:function(){return T},circle:function(){return U},elastic:V,back:W,bounce:function(){return X}}),M=d3.map({"in":Q,out:O,"in-out":P,"out-in":function(a){return P(O(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=L.get(c)||K,d=M.get(d)||Q,N(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;_.lastIndex=0;for(d=0;c=_.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=_.lastIndex;f180?k+=360:k-j>180&&(j+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(j,k)})):k&&c.push(c.pop()+"rotate("+k+")"),l!=m?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(l,m)}):m&&c.push(c.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:d3.interpolateNumber(n[0],o[0])},{i:e-2,x:d3.interpolateNumber(n[1],o[1])})):(o[0]!=1||o[1]!=1)&&c.push(c.pop()+"scale("+o+")"),e=d.length,function(a){var b=-1,f;while(++b180?f-=360:f<-180&&(f+=360),function(a){return bm(c+f*a,d+g*a,e+h*a).toString()}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h1){while(++e=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},bt.sort=function(a){a=bz.apply(this,arguments);for(var b=-1,c=this.length;++b0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function i(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this,h=g[d];h&&(g.removeEventListener(a,h,h.$),delete g[d]),b&&(g.addEventListener(a,g[d]=i,i.$=c),i._=b)})},bt.each=function(a){return bA(this,function(b,c,d){a.call(b,b.__data__,c,d)})},bt.call=function(a){return a.apply(this,(arguments[0]=this,arguments)),this},bt.empty=function(){return!this.node()},bt.node=function(a){for(var b=0,c=this.length;b=cF?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cG,b=cH,c=cI,d=cJ;return e.innerRadius=function(b){return arguments.length?(a=p(b),e):a},e.outerRadius=function(a){return arguments.length?(b=p(a),e):b},e.startAngle=function(a){return arguments.length?(c=p(a),e):c},e.endAngle=function(a){return arguments.length?(d=p(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cE;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cE=-Math.PI/2,cF=2*Math.PI-1e-6;d3.svg.line=function(){return cK(m)};var cN="linear",cO=d3.map({linear:cP,"step-before":cQ,"step-after":cR,basis:cX,"basis-open":cY,"basis-closed":cZ,bundle:c$,cardinal:cU,"cardinal-open":cS,"cardinal-closed":cT,monotone:dh}),da=[0,2/3,1/3,0],db=[0,1/3,2/3,0],dc=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cK(di);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cQ.reverse=cR,cR.reverse=cQ,d3.svg.area=function(){return dj(Object)},d3.svg.area.radial=function(){var a=dj(di);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1,e.a1-e.a0)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1,f.a1-f.a0)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cE,k=e.call(a,h,g)+cE;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Math.PI)+",1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=dk,b=dl,c=dm,d=cI,e=cJ;return f.radius=function(a){return arguments.length?(c=p(a),f):c},f.source=function(b){return arguments.length?(a=p(b),f):a},f.target=function(a){return arguments.length?(b=p(a),f):b},f.startAngle=function(a){return arguments.length?(d=p(a),f):d},f.endAngle=function(a){return arguments.length?(e=p(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=dk,b=dl,c=dq;return d.source=function(b){return arguments.length?(a=p(b),d):a},d.target=function(a){return arguments.length?(b=p(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal +.radial=function(){var a=d3.svg.diagonal(),b=dq,c=a.projection;return a.projection=function(a){return arguments.length?c(dr(b=a)):b},a},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function c(c,d){return(dv.get(a.call(this,c,d))||du)(b.call(this,c,d))}var a=dt,b=ds;return c.type=function(b){return arguments.length?(a=p(b),c):a},c.size=function(a){return arguments.length?(b=p(a),c):b},c};var dv=d3.map({circle:du,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dx)),c=b*dx;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dw),c=b*dw/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dw),c=b*dw/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}});d3.svg.symbolTypes=dv.keys();var dw=Math.sqrt(3),dx=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function k(k){k.each(function(){var k=d3.select(this),l=h==null?a.ticks?a.ticks.apply(a,g):a.domain():h,m=i==null?a.tickFormat?a.tickFormat.apply(a,g):String:i,n=dA(a,l,j),o=k.selectAll(".minor").data(n,String),p=o.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),q=d3.transition(o.exit()).style("opacity",1e-6).remove(),r=d3.transition(o).style("opacity",1),s=k.selectAll("g").data(l,String),t=s.enter().insert("g","path").style("opacity",1e-6),u=d3.transition(s.exit()).style("opacity",1e-6).remove(),v=d3.transition(s).style("opacity",1),w,x=cf(a),y=k.selectAll(".domain").data([0]),z=y.enter().append("path").attr("class","domain"),A=d3.transition(y),B=a.copy(),C=this.__chart__||B;this.__chart__=B,t.append("line").attr("class","tick"),t.append("text");var D=t.select("line"),E=v.select("line"),F=s.select("text").text(m),G=t.select("text"),H=v.select("text");switch(b){case"bottom":w=dy,p.attr("y2",d),r.attr("x2",0).attr("y2",d),D.attr("y2",c),G.attr("y",Math.max(c,0)+f),E.attr("x2",0).attr("y2",c),H.attr("x",0).attr("y",Math.max(c,0)+f),F.attr("dy",".71em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+e+"V0H"+x[1]+"V"+e);break;case"top":w=dy,p.attr("y2",-d),r.attr("x2",0).attr("y2",-d),D.attr("y2",-c),G.attr("y",-(Math.max(c,0)+f)),E.attr("x2",0).attr("y2",-c),H.attr("x",0).attr("y",-(Math.max(c,0)+f)),F.attr("dy","0em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+ -e+"V0H"+x[1]+"V"+ -e);break;case"left":w=dz,p.attr("x2",-d),r.attr("x2",-d).attr("y2",0),D.attr("x2",-c),G.attr("x",-(Math.max(c,0)+f)),E.attr("x2",-c).attr("y2",0),H.attr("x",-(Math.max(c,0)+f)).attr("y",0),F.attr("dy",".32em").attr("text-anchor","end"),A.attr("d","M"+ -e+","+x[0]+"H0V"+x[1]+"H"+ -e);break;case"right":w=dz,p.attr("x2",d),r.attr("x2",d).attr("y2",0),D.attr("x2",c),G.attr("x",Math.max(c,0)+f),E.attr("x2",c).attr("y2",0),H.attr("x",Math.max(c,0)+f).attr("y",0),F.attr("dy",".32em").attr("text-anchor","start"),A.attr("d","M"+e+","+x[0]+"H0V"+x[1]+"H"+e)}if(a.ticks)t.call(w,C),v.call(w,B),u.call(w,B),p.call(w,C),r.call(w,B),q.call(w,B);else{var I=B.rangeBand()/2,J=function(a){return B(a)+I};t.call(w,J),v.call(w,J)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h=null,i,j=0;return k.scale=function(b){return arguments.length?(a=b,k):a},k.orient=function(a){return arguments.length?(b=a,k):b},k.ticks=function(){return arguments.length?(g=arguments,k):g},k.tickValues=function(a){return arguments.length?(h=a,k):h},k.tickFormat=function(a){return arguments.length?(i=a,k):i},k.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,k},k.tickPadding=function(a){return arguments.length?(f=+a,k):f},k.tickSubdivide=function(a){return arguments.length?(j=+a,k):j},k},d3.svg.brush=function(){function g(a){a.each(function(){var a=d3.select(this),e=a.selectAll(".background").data([0]),f=a.selectAll(".extent").data([0]),l=a.selectAll(".resize").data(d,String),m;a.style("pointer-events","all").on("mousedown.brush",k).on("touchstart.brush",k),e.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),f.enter().append("rect").attr("class","extent").style("cursor","move"),l.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return dB[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),l.style("display",g.empty()?"none":null),l.exit().remove(),b&&(m=cf(b),e.attr("x",m[0]).attr("width",m[1]-m[0]),i(a)),c&&(m=cf(c),e.attr("y",m[0]).attr("height",m[1]-m[0]),j(a)),h(a)})}function h(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+e[+/e$/.test(a)][0]+","+e[+/^s/.test(a)][1]+")"})}function i(a){a.select(".extent").attr("x",e[0][0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",e[1][0]-e[0][0])}function j(a){a.select(".extent").attr("y",e[0][1]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",e[1][1]-e[0][1])}function k(){function x(){var a=d3.event.changedTouches;return a?d3.touches(d,a)[0]:d3.mouse(d)}function y(){d3.event.keyCode==32&&(q||(r=null,s[0]-=e[1][0],s[1]-=e[1][1],q=2),Y())}function z(){d3.event.keyCode==32&&q==2&&(s[0]+=e[1][0],s[1]+=e[1][1],q=0,Y())}function A(){var a=x(),d=!1;t&&(a[0]+=t[0],a[1]+=t[1]),q||(d3.event.altKey?(r||(r=[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]),s[0]=e[+(a[0]0?e=c:e=0:c>0&&(b.start({type:"start",alpha:e=c}),d3.timer(a.tick)),a):e},a.start=function(){function p(a,c){var d=t(b),e=-1,f=d.length,g;while(++ee&&(e=h),d.push(h)}for(g=0;g0){f=-1;while(++f=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]))}return g}var a=!0,b=Number,c=ed,d=eb;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=p(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return ec(b,a)}:p(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function d(e,g,h){var i=b.call(f,e,g),j=ej?e:{data:e};j.depth=g,h.push(j);if(i&&(l=i.length)){var k=-1,l,m=j.children=[],n=0,o=g+1,p;while(++k0&&(eH(eI(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!eA(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!ez(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];eF(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=eB(g,eD),l=eB(g,eC),m=eB(g,eE),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return eF(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=ey,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ee(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=d.dy;while(++fd.dx)j=d.dx;while(++f=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function g(g){var h=g[0]*eN-c,i=g[1]*eN-d;if(e){var j=f+e-i,k=h*Math.cos(i)/j;h=j*Math.sin(k),i=j*Math.cos(k)-f}else h*=Math.cos(i),i*=-1;return[a*h+b[0],a*i+b[1]]}var a=200,b=[480,250],c,d,e,f;return g.invert=function(d){var g=(d[0]-b[0])/a,h=(d[1]-b[1])/a;if(e){var i=f+h,j=Math.sqrt(g*g+i*i);h=f+e-j,g=c+j*Math.atan2(g,i)/Math.cos(h)}else h*=-1,g/=Math.cos(h);return[g/eN,h/eN]},g.parallel=function(a){return arguments.length?(f=1/Math.tan(e=a*eN),g):e/eN},g.origin=function(a){return arguments.length?(c=a[0]*eN,d=a[1]*eN,g):[c/eN,d/eN]},g.scale=function(b){return arguments.length?(a=+b,g):a},g.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],g):b},g.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function c(c){var d=c[0]/360,e=-(Math.log(Math.tan(Math.PI/4+c[1]*eN/2))/eN)/360;return[a*d+b[0],a*Math.max(-0.5,Math.min(.5,e))+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,2*Math.atan(Math.exp(-360*e*eN))/eN-90]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.path=function(){function e(c,e){typeof a=="function"&&(b=eP(a.apply(this,arguments))),g(c);var f=d.length?d.join(""):null;return d=[],f}function f(a){return c(a).join(",")}function i(a){var b=l(a[0]),c=0,d=a.length;while(++c0){d.push("M");while(++h0){d.push("M");while(++kd&&(d=a),fe&&(e=f)}),[[b,c],[d,e]]};var eR={Feature:eS,FeatureCollection:eT,GeometryCollection:eU,LineString:eV,MultiLineString:eW,MultiPoint:eV,MultiPolygon:eX,Point:eY,Polygon:eZ};d3.geo.circle=function(){function e(){}function f(a){return d.distance(a)=k*k+l*l?d[f].index=-1:(d[m].index=-1,o=d[f].angle,m=f,n=g)):(o=d[f].angle,m=f,n=g);e.push(h);for(f=0,g=0;f<2;++g)d[g].index!==-1&&(e.push(d[g].index),f++);p=e.length;for(;g=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var fi={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return fj(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h=g,j=b.y>=h,l=(j<<1)+i;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=fk()),i?c=g:e=g,j?d=h:f=h,k(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(fm));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++gd&&(d=f.x),f.y>e&&(e=f.y);var i=d-b,j=e-c;i>j?e=c+i:d=b+j}var m=fk();return m.add=function(a){k(m,a,b,c,d,e)},m.visit=function(a){fl(a,m,b,c,d,e)},a.forEach(m.add),m},d3.time={};var fn=Date;fo.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){fp.setUTCDate.apply(this._,arguments)},setDay:function(){fp.setUTCDay.apply(this._,arguments)},setFullYear:function(){fp.setUTCFullYear.apply(this._,arguments)},setHours:function(){fp.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){fp.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){fp.setUTCMinutes.apply(this._,arguments)},setMonth:function(){fp.setUTCMonth.apply(this._,arguments)},setSeconds:function(){fp.setUTCSeconds.apply(this._,arguments)},setTime:function(){fp.setTime.apply(this._,arguments)}};var fp=Date.prototype;d3.time.format=function(a){function c(c){var d=[],e=-1,f=0,g,h;while(++e=12?"PM":"AM"},S:function(a){return fr(a.getSeconds())},U:function(a){return fr(d3.time.sundayOfYear(a))},w:function(a){return a.getDay()},W:function(a){return fr(d3.time.mondayOfYear(a))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return fr(a.getFullYear()%100)},Y:function(a){return ft(a.getFullYear()%1e4)},Z:fX,"%":function(a){return"%"}},fw={a:fx,A:fy,b:fC,B:fE,c:fI,d:fP,e:fP,H:fQ,I:fQ,L:fT,m:fO,M:fR,p:fV,S:fS,x:fJ,X:fK,y:fM,Y:fL},fz=/^(?:sun|mon|tue|wed|thu|fri|sat)/i,fA=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i,fB=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],fD=d3.map({jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}),fF=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,fG=d3.map({january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11}),fH=["January","February","March","April","May","June","July","August","September","October","November","December"],fU=/\s*\d+/,fW=d3.map({am:0,pm:1});d3.time.format.utc=function(a){function c(a){try{fn=fo;var c=new fn;return c._=a,b(c)}finally{fn=Date}}var b=d3.time.format(a);return c.parse=function(a){try{fn=fo;var c=b.parse(a);return c&&c._}finally{fn=Date}},c.toString=b.toString,c};var fY=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?fZ:fY,fZ.parse=function(a){var b=new Date(a);return isNaN(b)?null:b},fZ.toString=fY.toString,d3.time.second=f$(function(a){return new fn(Math.floor(a/1e3)*1e3)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*1e3)},function(a){return a.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=f$(function(a){return new fn(Math.floor(a/6e4)*6e4)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*6e4)},function(a){return a.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=f$(function(a){var b=a.getTimezoneOffset()/60;return new fn((Math.floor(a/36e5-b)+b)*36e5)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*36e5)},function(a){return a.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=f$(function(a){return new fn(a.getFullYear(),a.getMonth(),a.getDate())},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(a){var b=d3.time.year(a);return Math.floor((a-b)/864e5-(a.getTimezoneOffset()-b.getTimezoneOffset())/1440)},fB.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=d3.time[a]=f$(function(a){return(a=d3.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+Math.floor(b)*7)},function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});d3.time[a+"s"]=c.range,d3.time[a+"s"].utc=c.utc.range,d3.time[a+"OfYear"]=function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)}}),d3.time.week=d3.time.sunday,d3.time.weeks=d3.time.sunday.range,d3.time.weeks.utc=d3.time.sunday.utc.range,d3.time.weekOfYear=d3.time.sundayOfYear,d3.time.month=f$(function(a){return new fn(a.getFullYear(),a.getMonth(),1)},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=f$(function(a){return new fn(a.getFullYear(),0,1)},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var gg=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],gh=[[d3.time.second,1],[d3.time.second,5],[d3.time.second,15],[d3.time.second,30],[d3.time.minute,1],[d3.time.minute,5],[d3.time.minute,15],[d3.time.minute,30],[d3.time.hour,1],[d3.time.hour,3],[d3.time.hour,6],[d3.time.hour,12],[d3.time.day,1],[d3.time.day,2],[d3.time.week,1],[d3.time.month,1],[d3.time.month,3],[d3.time.year,1]],gi=[[d3.time.format("%Y"),function(a){return!0}],[d3.time.format("%B"),function(a){return a.getMonth()}],[d3.time.format("%b %d"),function(a){return a.getDate()!=1}],[d3.time.format("%a %d"),function(a){return a.getDay()&&a.getDate()!=1}],[d3.time.format("%I %p"),function(a){return a.getHours()}],[d3.time.format("%I:%M"),function(a){return a.getMinutes()}],[d3.time.format(":%S"),function(a){return a.getSeconds()}],[d3.time.format(".%L"),function(a){return a.getMilliseconds()}]],gj=d3.scale.linear(),gk=gd(gi);gh.year=function(a,b){return gj.domain(a.map(gf)).ticks(b).map(ge)},d3.time.scale=function(){return ga(d3.scale.linear(),gh,gk)};var gl=gh.map(function(a){return[a[0].utc,a[1]]}),gm=[[d3.time.format.utc("%Y"),function(a){return!0}],[d3.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(a){return a.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&a.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],gn=gd(gm);gl.year=function(a,b){return gj.domain(a.map(gp)).ticks(b).map(go)},d3.time.scale.utc=function(){return ga(d3.scale.linear(),gl,gn)}})(); \ No newline at end of file diff --git a/v3/js/holistic.js b/v3/js/holistic.js new file mode 100644 index 000000000..8591ce491 --- /dev/null +++ b/v3/js/holistic.js @@ -0,0 +1,712 @@ +// Created by Irene Chen (2013) + +// look at js/pytutor.js for guide on refactoring object methods in JS! +function HolisticVisualizer(domRootID, dat, params) { + + var myViz = this; + myViz.domRoot = $('#' + domRootID); + myViz.domRootD3 = d3.select('#' + domRootID); + + myViz.domRoot.html('
      \ +

      Step N/A

      \ +
      \ +
      Step N/A\ +
      '); + myViz.domRoot = myViz.domRoot.find('div.HolisticVisualizer'); + myViz.domRootD3 = myViz.domRootD3.select('div.HolisticVisualizer'); + + var pregeneratedHTML = '
      \ +
      \ + \ + \ +
      \ + Connecting line\ +
      \ + Debug panel\ +
      \ + \ +
      \ +
      \ +
      \ +
      \ + \ +
      \ +
      \ +

      Debug: step N/A

      \ +
      \ +
      \ +
      '; + + myViz.domRoot.html(pregeneratedHTML); + + params.hideCode = true; + myViz.altVisualizer = new ExecutionVisualizer('altVisual', dat, params); + myViz.tooltipVisualizer = new ExecutionVisualizer('holisticTooltipVisual', dat, params); + + /* + * ================================= + * DATASET + * ================================= + */ + + var trace = dat; + // build dataset from trace + var dataset = []; + for (var i = 0; i < trace.trace.length; i++) { + // we want indexing to start at 0 - offset of -1 + dataset.push(trace.trace[i].line - 1); + } + + /* + * ================================= + * CONSTANTS + * ================================= + */ + var NO_VALUE = '~'; + + var max_value = Math.max.apply(Math, dataset); + var num_rows = max_value + 1; + + // width and height + var padding = 17; + var col_w = 26; + var col_mid = col_w / 2; + var row_h = 24; + var row_mid = 12; + var w = dataset.length * col_w; + var h = num_rows * row_h; + var final_h = h + row_h; + + // track alt visual data + var altVisualStep = 0; + + /* + * ================================= + * CODE TABLE + * ================================= + */ + var code = trace.code.split('\n'); + var table = myViz.domRoot.find('#code'); + + for (var i = 0; i < code.length; i++) { + table.append('' + + '
      ' + code[i] + '
      ' + + '
      ' + (i+1) + ' 
      ' + + ''); + } + + // adjust width and height of table + myViz.domRoot.find('table').attr('height',h); + myViz.domRoot.find('td').attr('height',row_h); + myViz.domRoot.find('tr').attr('height',row_h); + + /* + * ================================= + * VAR-SELECT MENU + * ================================= + */ + // globals + var global_group = document.createElement('optgroup'); + global_group.setAttribute('label', 'Globals'); + var globals = {}; + for (var i = 0; i < trace.trace.length; i++) { + for (var j = 0; j < trace.trace[i].ordered_globals.length; j++) { + var x = trace.trace[i].ordered_globals[j]; + if (!(x in globals)) { + var option = document.createElement('option'); + option.text = option.value = x; + global_group.appendChild(option, null); + globals[x] = 1; + } + } + } + myViz.domRoot.find('#var-select').append(global_group); + + // functions + var functions = {}; + for (var i = 0; i < trace.trace.length; i++) { + if (trace.trace[i].func_name != "") { + var func = trace.trace[i].func_name; + if (!(func in functions)) { + var function_group = document.createElement('optgroup'); + function_group.setAttribute('label', trace.trace[i].func_name); + functions[trace.trace[i].func_name] = 1; + var function_vars = {}; + + var n = trace.trace[i].stack_to_render.length; + for (var j = 0; j < trace.trace[i].stack_to_render[n-1].ordered_varnames.length; j++) { + var x = trace.trace[i].stack_to_render[n-1].ordered_varnames[j]; + if (!(x in function_vars) && + x != '__return__') { + var option = document.createElement('option'); + option.text = option.value = x; + function_group.appendChild(option, null); + function_vars[x] = 1; + } + } + myViz.domRoot.find('#var-select').append(function_group); + } + } + } + + /* + * ================================= + * SVG CONSTRUCTION + * ================================= + */ + // construct code trace svg + var d3image = myViz.domRootD3.select("#slider"); + var svg = d3image.append("svg:svg") + .attr("width", w) + .attr("height", final_h); + + // scales + var xScale = d3.scale.linear() + .domain([0, dataset.length-1]) + .range([col_mid, w - col_mid]); + // xScale(i) = (i * col_w) + col_mid + var yScale = d3.scale.linear() + .domain([0, max_value]) + .range([row_mid, h - row_mid]); + // yScale(d) = (d * row_h) + row_mid + + /* + * ================================= + * BACKGROUND GROUP + * ================================= + */ + // var backgroundGroup = svg.append("svg:g"); + // var rows = backgroundGroup.selectAll("rect") + // .data(d3.range(num_rows + 1)) + // .enter() + // .append("svg:rect"); + + // rows.attr("x", 0) + // .attr("y", function(d, i) { + // return (d * row_h); + // }) + // .attr("width", w) + // .attr("height", row_h) + // .attr("fill", function(d, i) { + // if (d % 2 == 0) { + // return "#D5F1F1"; + // } else { + // return "white"; + // } + // }); + + /* + * ================================= + * TEXT GROUP + * ================================= + */ + var textGroup = svg.append("svg:g"); + var values = textGroup.selectAll("text") + .data(dataset) + .enter() + .append("text"); + + values.text( + function(d, i) { + var val = myViz.domRoot.find('#var-select').val(); + if (val == 'default') { + return NO_VALUE; + } + + if (myViz.domRoot.find('#var-select').parent().attr('label') == 'globals') { + if (val in trace.trace[i].globals) { + return trace.trace[i].globals[val]; + } else { + return NO_VALUE; + } + } else { + var n = trace.trace[i].stack_to_render.length; + if (n > 0 && + val in trace.trace[i].stack_to_render[n-1].encoded_locals && + myViz.domRoot.find('#var-select').parent().attr('label') == trace.trace[i].stack_to_render[n-1].func_name) { + return trace.trace[i].stack_to_render[n-1].encoded_locals[val]; + } else { + return NO_VALUE; + } + } + }) + .attr("x", function(d, i) { + return xScale(i) - 4; + }) + .attr("y", function(d, i) { + return yScale(d) + 4; + }) + .style("visibility", "hidden"); + + /* + * ================================= + * CONNECTOR GROUP + * ================================= + */ + var connectorGroup = svg.append("svg:g"); + + // create a line function that can convert data[] into x and y points + var line = d3.svg.line() + .x(function(d,i) { + return xScale(d[0]); + }) + .y(function(d) { + return yScale(d[1]); + }) + .interpolate('linear'); + + // TODO: this doesn't interpolate the way i want - let's do it manually instead + var curvedLine = d3.svg.line() + .x(function(d,i) { + return xScale(d[0]); + }) + .y(function(d) { + return yScale(d[1]); + }) + .interpolate('basis'); + + // tweak path data to include curves + var straightData = []; + var callData = []; + var callTextData = []; + var returnData = []; + + var specialSegmentsData = []; + for (var i = 0; i < dataset.length; i++) { + if (trace.trace[i].event == 'call') { + if ((i-1) > 0) { + specialSegmentsData.push([i-1, i, dataset[i], 'call']); + } + } else if (trace.trace[i].event == 'return') { + if ((i+1) < dataset.length) { + specialSegmentsData.push([i, i+1, dataset[i], 'return']); + } + } + } + specialSegmentsData.push([dataset.length, dataset.length, dataset[-1], 'end']); + + for (var i = 0; i < specialSegmentsData.length; i++) { + if (i > 0) { + var start = specialSegmentsData[i-1][1]; + } else { + var start = 0; + } + + // need to include original indices + var slice = dataset.slice(start,specialSegmentsData[i][1]); + var sliceData = []; + + for (var j = 0; j < slice.length; j++) { + sliceData.push([start + j, slice[j]]); + } + + // push to pathData + straightData.push(line(sliceData)); + + if (specialSegmentsData[i][3] == 'call') { + var headIndex = specialSegmentsData[i][0]; + var tailIndex = specialSegmentsData[i][1]; + var mid = headIndex; + var magic = (0.3*dataset[headIndex] + 0.7*dataset[tailIndex]); + var arrowData = [[headIndex, dataset[headIndex]], [mid, magic], [tailIndex, dataset[tailIndex]]]; + var arrowPathData = "M"+xScale(headIndex)+","+yScale(dataset[headIndex])+ + " Q"+xScale(mid)+","+yScale(magic)+" "+xScale(tailIndex)+","+yScale(dataset[tailIndex]); + callData.push(arrowPathData); + callTextData.push([headIndex, dataset[headIndex], tailIndex, dataset[tailIndex]]); + } else if (specialSegmentsData[i][3] == 'return') { + var headIndex = specialSegmentsData[i][0]; + var tailIndex = specialSegmentsData[i][1]; + var mid = tailIndex; + var magic = (0.3*dataset[headIndex] + 0.7*dataset[tailIndex]); + var arrowData = [[headIndex, dataset[headIndex]], [mid, magic], [tailIndex, dataset[tailIndex]]]; + var arrowPathData = "M"+xScale(headIndex)+","+yScale(dataset[headIndex])+ + " Q"+xScale(mid)+","+yScale(magic)+" "+xScale(tailIndex)+","+yScale(dataset[tailIndex]); + returnData.push(arrowPathData); + } + } + + // arrow head definition + + svg.append("defs").append("marker") + .attr("id", "call-arrowhead") + .attr("refX", 6 + 3) /*must be smarter way to calculate shift*/ + .attr("refY", 4) + .attr("markerWidth", 10) + .attr("markerHeight", 10) + .attr("orient", "auto") + .append("path") + .attr("d", "M 0,0 V 8 L6,4 Z") + .style("stroke", "red") + .style("fill", "red"); //this is actual shape for arrowhead + + svg.append("defs").append("marker") + .attr("id", "return-arrowhead") + .attr("refX", 6 + 3) /*must be smarter way to calculate shift*/ + .attr("refY", 4) + .attr("markerWidth", 10) + .attr("markerHeight", 10) + .attr("orient", "auto") + .append("path") + .attr("d", "M 0,0 V 8 L6,4 Z") + .style("stroke", "lime") + .style("fill", "lime"); //this is actual shape for arrowhead + + var straightConnector = connectorGroup.selectAll(".straight") + .data(straightData) + .enter() + .append("svg:path") + .attr("d", function (d) { return d; }) + .style("visibility", "visible"); + var callConnector = connectorGroup.selectAll(".call") + .data(callData) + .enter() + .append("svg:path") + .attr("d", function (d) { return d; }) + .style("stroke", "red") + .style("visibility", "visible") + .attr("marker-end", "url(#call-arrowhead)"); + var returnConnector = connectorGroup.selectAll(".return") + .data(returnData) + .enter() + .append("svg:path") + .attr("d", function (d) { return d; }) + .style("stroke", "lime") + .style("visibility", "visible") + .attr("marker-end", "url(#return-arrowhead)"); + + var functionText = connectorGroup.selectAll("text") + .data(callTextData) + .enter() + .append("text"); + + functionText.text(function(d, i) { + return trace.trace[d[2]].func_name; + }) + .attr("x", function(d, i) { + return xScale(d[0]) + 10; + }) + .attr("y", function(d, i) { + var mid = 0.5 * (d[1]+d[3]); + return yScale(mid) + 4; + }) + .style("visibility", "visible") + .style("font-family", "monospace") + .style("font-size", "10pt"); + + /* + * ================================= + * DEFAULT GROUP + * ================================= + */ + var defaultGroup = svg.append("svg:g"); + var circles = defaultGroup.selectAll("circle") + .data(dataset) + .enter() + .append("circle"); + + circles.attr("cx", function(d, i) { + return xScale(i); + }) + .attr("cy", function(d, i) { + return yScale(d); + }) + .attr("r", "4") + .attr("fill", function(d, i) { + return 'black'; + }) + .style("visibility", "visible"); + + /* + * ================================= + * DELIMITER GROUP + * ================================= + */ + // build function call dataset (need to grab returns as well!) + var functionCallDataset = []; + for (var i = 0; i < dataset.length; i++) { + if (trace.trace[i].event == 'call') { + functionCallDataset.push([i, dataset[i], 'call']); + } else if (trace.trace[i].event == 'return') { + functionCallDataset.push([i, dataset[i], 'return']); + } + } + + var delimitingGroup = svg.append("svg:g"); + var delimiters = delimitingGroup.selectAll("line") + .data(functionCallDataset) + .enter() + .append("line"); + + delimiters.attr("x1", function(d, i) { + if (d[2] == 'call') { + return xScale(d[0]) - col_mid; + } else { + return xScale(d[0]) + col_mid; + } + }) + .attr("y1", function(d, i) { + return 0; + }) + .attr("x2", function(d, i) { + if (d[2] == 'call') { + return xScale(d[0]) - col_mid; + } else { + return xScale(d[0]) + col_mid; + } + }) + .attr("y2", function(d, i) { + return h; + }) + .style("visibility", "hidden") + .classed("delimiter", true); + + /* + * ================================= + * GUIDE GROUP + * ================================= + */ + var guideGroup = svg.append("svg:g"); + var v_guides = guideGroup.selectAll("line") + .data(dataset) + .enter() + .append("line"); + + v_guides.attr("x1", function(d, i) { + return xScale(i); + }) + .attr("y1", function(d, i) { + return 0; + }) + .attr("x2", function(d, i) { + return xScale(i); + }) + .attr("y2", function(d, i) { + return h; + }) + .style("visibility", "hidden") + .classed("v-guide", true); + + var v_hovers = guideGroup.selectAll("rect") + .data(dataset) + .enter() + .append("rect"); + + // save "top" position for debug panel + var topPosition = myViz.domRoot.find('#debug').scrollTop(); + + v_hovers.attr("x", function(d, i) { + return (i * col_w); + }) + .attr("y", function(d, i) { + return 0; + }) + .attr("width", function(d, i) { + return col_w; + }) + .attr("height", function(d, i) { + return h; + }) + .classed("v-hover", true) + .on("mouseover", + function (d, i) { + var row = table[0].rows[d]; + var cell = row.cells[0]; + myViz.domRoot.find('#code tr:eq(' + d + ') td:first').addClass("v-hover"); + myViz.domRoot.find('#code tr:eq(' + d + ') td:last').addClass("v-hover"); + v_guides.filter( + function(data, index) { + return index == i; + }) + .style("visibility", "visible"); + circles.filter( + function(data, index) { + return index == i; + }); + + var svgOffset = myViz.domRoot.find('div#slider svg').offset(); + + // hide old tooltip + hideTooltip(); + + if (d3.mouse(this)[1] > (yScale(d)-row_mid) && d3.mouse(this)[1] < (yScale(d+1)-row_mid) ) { + $('#tooltip-step-id').text(i); + $('#holisticTooltip').show(); + myViz.tooltipVisualizer.renderStep(i); + changeTooltipPosition(xScale(i) + svgOffset.left, yScale(d) + svgOffset.top); + } + }) + .on("mousemove", + function (d, i) { + var row = table[0].rows[d]; + var cell = row.cells[0]; + myViz.domRoot.find('#code tr:eq(' + d + ') td:first').addClass("v-hover"); + myViz.domRoot.find('#code tr:eq(' + d + ') td:last').addClass("v-hover"); + v_guides.filter( + function(data, index) { + return index == i; + }) + .style("visibility", "visible"); + + var svgOffset = myViz.domRoot.find('div#slider svg').offset(); + + // hide old tooltip + hideTooltip(); + + if (d3.mouse(this)[1] > (yScale(d)-row_mid) && d3.mouse(this)[1] < (yScale(d+1)-row_mid) ) { + $('#tooltip-step-id').text(i); + $('#holisticTooltip').show(); + myViz.tooltipVisualizer.renderStep(i); + changeTooltipPosition(xScale(i) + svgOffset.left, yScale(d) + svgOffset.top); + } + }) + .on("mouseout", + function (d, i) { + var row = table[0].rows[d]; + var cell = row.cells[0]; + myViz.domRoot.find('#code tr:eq(' + d + ') td:first').removeClass("v-hover"); + myViz.domRoot.find('#code tr:eq(' + d + ') td:last').removeClass("v-hover"); + v_guides.filter( + function(data, index) { + return index == i; + }) + .style("visibility", "hidden"); + circles.filter( + function(data, index) { + return index == i; + }); + + hideTooltip(); + }) + .on("click", + function (d, i) { + // debug panel + myViz.domRoot.find('#debug-title').text(i); + myViz.domRoot.find('#debug').html("
      "+JSON.stringify(trace.trace[i], undefined, 2)+"
      "); + myViz.domRoot.find('#debug').scrollTop(topPosition); + + if (d3.mouse(this)[1] > (yScale(d)-row_mid) && d3.mouse(this)[1] < (yScale(d+1)-row_mid) ) { + // ExecutionVisualizer panel + // use $('#altVisual').is(":visible") to check if visible + if ($('#altContainer').is(":visible")) { + if (altVisualStep == i) { + $('#altContainer').hide(); + } else { + $('#step-id').text(i); + altVisualStep = i; + myViz.altVisualizer.renderStep(altVisualStep); + } + } else { + $('#step-id').text(i); + altVisualStep = i; + // have to draw arrows after the div is shown! + $('#altContainer').show(); + myViz.altVisualizer.renderStep(altVisualStep); + } + } + }); + + // tooltip helper function + var changeTooltipPosition = function(x, y) { + var tooltipX = x - 8; + var tooltipY = y + 8; + var tooltipWidth = $('#holisticTooltip').width(); + // TODO: adjust for tooltip height + if ((tooltipX + tooltipWidth) > $(window).width()) { + $('#holisticTooltip').css({top: tooltipY, left: tooltipX - tooltipWidth}); + } else { + $('#holisticTooltip').css({top: tooltipY, left: tooltipX}); + } + }; + + var hideTooltip = function() { + $('#holisticTooltip').hide(); + }; + + /* + * ================================= + * AXIS GROUP + * ================================= + */ + var axisGroup = svg.append("svg:g"); + var xAxis = d3.svg.axis() + .scale(xScale) + .orient("bottom") + .ticks(dataset.length); + axisGroup.attr("class", "axis") + .attr("transform", "translate(0," + (final_h - padding) + ")") + .call(xAxis); + + /* + * ================================= + * EVENT HANDLERS + * ================================= + */ + myViz.domRoot.find("#var-select").change(function(e) { + if (myViz.domRoot.find("#var-select").val() !== 'default') { + circles.style("visibility", "hidden"); + v_hovers.style("visibility", "hidden"); + values.style("visibility", "visible"); + values.text(function(d, i) { + var val = myViz.domRoot.find('#var-select').val(); + if (val == 'default') { + return "~"; + } + if (myViz.domRoot.find(':selected').parent().attr('label') == 'Globals') { + if (val in trace.trace[i].globals) { + return trace.trace[i].globals[val]; + } else { + return "~"; + } + } else { + var n = trace.trace[i].stack_to_render.length; + if (n > 0 && + val in trace.trace[i].stack_to_render[n-1].encoded_locals && + myViz.domRoot.find(':selected').parent().attr('label') == trace.trace[i].stack_to_render[n-1].func_name) { + return trace.trace[i].stack_to_render[n-1].encoded_locals[val]; + } else { + return "~"; + } + } + }); + } else { + circles.style("visibility", "visible"); + v_hovers.style("visibility", "visible"); + values.style("visibility", "hidden"); + } + }); + + myViz.domRoot.find('#connector-select').click(function() { + if($(this).is(':checked')){ + connector.style("visibility", "visible"); + } else { + connector.style("visibility", "hidden"); + } + }); + + myViz.domRoot.find('#debugPanel').hide(); + myViz.domRoot.find('#debug-select').click(function() { + if($(this).is(':checked')){ + myViz.domRoot.find('#debugPanel').show(); + } else { + myViz.domRoot.find('#debugPanel').hide(); + } + }); + + myViz.domRoot.find('#delimiter-select').click(function() { + if($(this).is(':checked')){ + delimiters.style("visibility", "visible"); + } else { + delimiters.style("visibility", "hidden"); + } + }); +} + +// stubs for unimplemented interface methods +HolisticVisualizer.prototype.updateOutput = function() {}; +HolisticVisualizer.prototype.redrawConnectors = function() { + this.altVisualizer.redrawConnectors(); +}; +HolisticVisualizer.prototype.destroyAllAnnotationBubbles = function() {}; diff --git a/v3/js/hooks.js b/v3/js/hooks.js new file mode 100644 index 000000000..1e4fa49e4 --- /dev/null +++ b/v3/js/hooks.js @@ -0,0 +1,71 @@ +/* API for adding a hook, created by David Pritchard + + An external user should call +add_pytutor_hook("hook_name_here", function(args) {...}) + args will be a javascript object with several named properties; + this is meant to be similar to Python's keyword arguments. + + The hooked function should return an array whose first element is a boolean: + true if it completely handled the situation (no further hooks + nor the base function should be called); false otherwise (wasn't handled). + If the hook semantically represents a function that returns something, + the second value of the returned array is that semantic return value. + + E.g. for the Java visualizer a simplified version of a hook we use is: + +add_pytutor_hook( + "isPrimitiveType", + function(args) { + var obj = args.obj; // unpack + if (obj instanceof Array && obj[0] == "CHAR-LITERAL") + return [true, true]; // yes we handled it, yes it's primitive + return [false]; // didn't handle it, let someone else + }); + + Hook callbacks can return false or undefined (i.e. no return + value) in lieu of [false]. + + NB: If multiple functions are added to a hook, the oldest goes first. +*/ + +var add_pytutor_hook = function(hook_name, func) { + if (pytutor_hooks[hook_name]) + pytutor_hooks[hook_name].push(); + else + pytutor_hooks[hook_name] = [func]; +} + +// this is global in order to reach static functions like isPrimitiveType +var pytutor_hooks = {}; // keys, hook names; values, list of functions + +/* +try_hook(hook_name, args): how the internal codebase invokes a hook. + args will be a javascript object with several named properties; + this is meant to be similar to Python's keyword arguments. + E.g., + +function isPrimitiveType(obj) { + var hook_result = try_hook("isPrimitiveType", {obj:obj}); + if (hook_result[0]) return hook_result[1]; + // go on as normal if the hook didn't handle it + + Although add_pytutor_hook allows the hooked function to + return false or undefined, try_hook will always return + something with the strict format [false], [true] or [true, ...]. +*/ + +var try_hook = function(hook_name, args) { + if (pytutor_hooks[hook_name]) { + for (var i=0; i", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + + +$(document).ready(function() { + // for rounded corners + $(".activityPane").corner('15px'); + + var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, + editCodeBaseURL: 'visualize.html'}); + + // redraw connector arrows on window resize + $(window).resize(function() { + demoViz.redrawConnectors(); + }); +}); + diff --git a/v3/js/jquery-1.6.min.js b/v3/js/jquery-1.6.min.js new file mode 100644 index 000000000..c72011dfa --- /dev/null +++ b/v3/js/jquery-1.6.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.6 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon May 2 13:50:00 2011 -0400 + */ +(function(a,b){function cw(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function ct(a){if(!ch[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ci||(ci=c.createElement("iframe"),ci.frameBorder=ci.width=ci.height=0),c.body.appendChild(ci);if(!cj||!ci.createElement)cj=(ci.contentWindow||ci.contentDocument).document,cj.write("");b=cj.createElement(a),cj.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ci)}ch[a]=d}return ch[a]}function cs(a,b){var c={};f.each(cn.concat.apply([],cn.slice(0,b)),function(){c[this]=a});return c}function cr(){co=b}function cq(){setTimeout(cr,0);return co=f.now()}function cg(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cf(){try{return new a.XMLHttpRequest}catch(b){}}function b_(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){name="data-"+c.replace(j,"$1-$2").toLowerCase(),d=a.getAttribute(name);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(e){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?g=[null,a,null]:g=i.exec(a);if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
      a",b=a.getElementsByTagName("*"),d=a.getElementsByTagName("a")[0];if(!b||!b.length||!d)return{};e=c.createElement("select"),f=e.appendChild(c.createElement("option")),g=a.getElementsByTagName("input")[0],i={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.55$/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:g.value==="on",optSelected:f.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},g.checked=!0,i.noCloneChecked=g.cloneNode(!0).checked,e.disabled=!0,i.optDisabled=!f.disabled;try{delete a.test}catch(r){i.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function click(){i.noCloneEvent=!1,a.detachEvent("onclick",click)}),a.cloneNode(!0).fireEvent("onclick")),g=c.createElement("input"),g.value="t",g.setAttribute("type","radio"),i.radioValue=g.value==="t",g.setAttribute("checked","checked"),a.appendChild(g),j=c.createDocumentFragment(),j.appendChild(a.firstChild),i.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",k=c.createElement("body"),l={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(p in l)k.style[p]=l[p];k.appendChild(a),c.documentElement.appendChild(k),i.appendChecked=g.checked,i.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,i.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
      ",i.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
      t
      ",m=a.getElementsByTagName("td"),q=m[0].offsetHeight===0,m[0].style.display="",m[1].style.display="none",i.reliableHiddenOffsets=q&&m[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(h=c.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),i.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(h,null).marginRight,10)||0)===0),k.innerHTML="",c.documentElement.removeChild(k);if(a.attachEvent)for(p in{submit:1,change:1,focusin:1})o="on"+p,q=o in a,q||(a.setAttribute(o,"return;"),q=typeof a[o]=="function"),i[p+"Bubbles"]=q;return i}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[c]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||"set"in c&&c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b=a.selectedIndex,c=[],d=a.options,e=a.type==="select-one";if(b<0)return null;for(var g=e?b:0,h=e?b+1:d.length;g=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex",readonly:"readOnly"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c]||(v&&(f.nodeName(a,"form")||u.test(c))?v:b);if(d!==b){if(d===null||d===!1&&!t.test(c)){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;d===!0&&!t.test(c)&&(d=c),a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.getAttribute("value");a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),f.support.getSetAttribute||(f.attrFix=f.extend(f.attrFix,{"for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}),v=f.attrHooks.name=f.attrHooks.value=f.valHooks.button={get:function(a,c){var d;if(c==="value"&&!f.nodeName(a,"button"))return a.getAttribute(c);d=a.getAttributeNode(c);return d&&d.specified?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=Object.prototype.hasOwnProperty,x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function J(a){var c=a.target,d,e;if(!!y.test(c.nodeName)&&!c.readOnly){d=f._data(c,"_change_data"),e=I(c),(a.type!=="focusout"||c.type!=="radio")&&f._data(c,"_change_data",e);if(d===b||e===d)return;if(d!=null||e)a.type="change",a.liveFired=b,f.event.trigger(a,arguments[1],c)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){return a.nodeName.toLowerCase()==="input"&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!be[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[];for(var i=0,j;(j=a[i])!=null;i++){typeof j=="number"&&(j+="");if(!j)continue;if(typeof j=="string")if(!ba.test(j))j=b.createTextNode(j);else{j=j.replace(Z,"<$1>");var k=($.exec(j)||["",""])[1].toLowerCase(),l=be[k]||be._default,m=l[0],n=b.createElement("div");n.innerHTML=l[1]+j+l[2];while(m--)n=n.lastChild;if(!f.support.tbody){var o=_.test(j),p=k==="table"&&!o?n.firstChild&&n.firstChild.childNodes:l[1]===""&&!o?n.childNodes:[];for(var q=p.length-1;q>=0;--q)f.nodeName(p[q],"tbody")&&!p[q].childNodes.length&&p[q].parentNode.removeChild(p[q])}!f.support.leadingWhitespace&&Y.test(j)&&n.insertBefore(b.createTextNode(Y.exec(j)[0]),n.firstChild),j=n.childNodes}var r;if(!f.support.appendChecked)if(j[0]&&typeof (r=j.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV;try{bU=e.href}catch(bW){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bX(bS),ajaxTransport:bX(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?b$(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b_(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bY(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bY(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bZ(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var ca=f.now(),cb=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+ca++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cb.test(b.url)||e&&cb.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cb,l),b.url===j&&(e&&(k=k.replace(cb,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cc=a.ActiveXObject?function(){for(var a in ce)ce[a](0,1)}:!1,cd=0,ce;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cf()||cg()}:cf,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cc&&delete ce[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cd,cc&&(ce||(ce={},f(a).unload(cc)),ce[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ch={},ci,cj,ck=/^(?:toggle|show|hide)$/,cl=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cm,cn=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],co,cp=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cs("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a=f.timers,b=a.length;while(b--)a[b]()||a.splice(b,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cm),cm=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cu=/^t(?:able|d|h)$/i,cv=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cw(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cu.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="
      ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cv.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cv.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cw(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cw(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/v3/js/jquery-1.8.2.min.js b/v3/js/jquery-1.8.2.min.js new file mode 100644 index 000000000..f65cf1dc4 --- /dev/null +++ b/v3/js/jquery-1.8.2.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
      a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
      t
      ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
      ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
      ",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

      ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
      ","
      "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
      ").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/v3/js/jquery-ui-1.8.21.custom.min.js b/v3/js/jquery-ui-1.8.21.custom.min.js new file mode 100644 index 000000000..e060fdcf4 --- /dev/null +++ b/v3/js/jquery-ui-1.8.21.custom.min.js @@ -0,0 +1,21 @@ +/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.21",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.position.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.slider.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("
      ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.21"})})(jQuery);; \ No newline at end of file diff --git a/v3/js/jquery-ui-1.8.24.custom.min.js b/v3/js/jquery-ui-1.8.24.custom.min.js new file mode 100644 index 000000000..a684be39f --- /dev/null +++ b/v3/js/jquery-ui-1.8.24.custom.min.js @@ -0,0 +1,25 @@ +/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.24",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a("").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.curCSS||(a.curCSS=a.css),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.position.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),a.curCSS||(a.curCSS=a.css),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.resizable.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('
      ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e
      ');h.css({zIndex:c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);return l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui()),!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.24"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!i)return;e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/d.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*d.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);;/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.slider.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("
      ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.24"})})(jQuery);; \ No newline at end of file diff --git a/v3/js/jquery.ba-bbq.min.js b/v3/js/jquery.ba-bbq.min.js new file mode 100644 index 000000000..bcbf24834 --- /dev/null +++ b/v3/js/jquery.ba-bbq.min.js @@ -0,0 +1,18 @@ +/* + * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010 + * http://benalman.com/projects/jquery-bbq-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); \ No newline at end of file diff --git a/v3/js/jquery.ba-dotimeout.min.js b/v3/js/jquery.ba-dotimeout.min.js new file mode 100644 index 000000000..02d9349c2 --- /dev/null +++ b/v3/js/jquery.ba-dotimeout.min.js @@ -0,0 +1,9 @@ +/* + * jQuery doTimeout: Like setTimeout, but better! - v1.0 - 3/3/2010 + * http://benalman.com/projects/jquery-dotimeout-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($){var a={},c="doTimeout",d=Array.prototype.slice;$[c]=function(){return b.apply(window,[0].concat(d.call(arguments)))};$.fn[c]=function(){var f=d.call(arguments),e=b.apply(this,[c+f[0]].concat(f));return typeof f[0]==="number"||typeof f[1]==="number"?this:e};function b(l){var m=this,h,k={},g=l?$.fn:$,n=arguments,i=4,f=n[1],j=n[2],p=n[3];if(typeof f!=="string"){i--;f=l=0;j=n[1];p=n[2]}if(l){h=m.eq(0);h.data(l,k=h.data(l)||{})}else{if(f){k=a[f]||(a[f]={})}}k.id&&clearTimeout(k.id);delete k.id;function e(){if(l){h.removeData(l)}else{if(f){delete a[f]}}}function o(){k.id=setTimeout(function(){k.fn()},j)}if(p){k.fn=function(q){if(typeof p==="string"){p=g[p]}p.apply(m,d.call(n,i))===true&&!q?o():e()};o()}else{if(k.fn){j===undefined?e():k.fn(j===false);return true}else{e()}}}})(jQuery); \ No newline at end of file diff --git a/v3/js/jquery.corner.js b/v3/js/jquery.corner.js new file mode 100644 index 000000000..c416613fd --- /dev/null +++ b/v3/js/jquery.corner.js @@ -0,0 +1,249 @@ +/*! + * jQuery corner plugin: simple corner rounding + * Examples and documentation at: http://jquery.malsup.com/corner/ + * version 2.12 (23-MAY-2011) + * Requires jQuery v1.3.2 or later + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * Authors: Dave Methvin and Mike Alsup + */ + +/** + * corner() takes a single string argument: $('#myDiv').corner("effect corners width") + * + * effect: name of the effect to apply, such as round, bevel, notch, bite, etc (default is round). + * corners: one or more of: top, bottom, tr, tl, br, or bl. (default is all corners) + * width: width of the effect; in the case of rounded corners this is the radius. + * specify this value using the px suffix such as 10px (yes, it must be pixels). + */ +;(function($) { + +var style = document.createElement('div').style, + moz = style['MozBorderRadius'] !== undefined, + webkit = style['WebkitBorderRadius'] !== undefined, + radius = style['borderRadius'] !== undefined || style['BorderRadius'] !== undefined, + mode = document.documentMode || 0, + noBottomFold = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8), + + expr = $.browser.msie && (function() { + var div = document.createElement('div'); + try { div.style.setExpression('width','0+0'); div.style.removeExpression('width'); } + catch(e) { return false; } + return true; + })(); + +$.support = $.support || {}; +$.support.borderRadius = moz || webkit || radius; // so you can do: if (!$.support.borderRadius) $('#myDiv').corner(); + +function sz(el, p) { + return parseInt($.css(el,p))||0; +}; +function hex2(s) { + s = parseInt(s).toString(16); + return ( s.length < 2 ) ? '0'+s : s; +}; +function gpc(node) { + while(node) { + var v = $.css(node,'backgroundColor'), rgb; + if (v && v != 'transparent' && v != 'rgba(0, 0, 0, 0)') { + if (v.indexOf('rgb') >= 0) { + rgb = v.match(/\d+/g); + return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]); + } + return v; + } + if (node.nodeName.toLowerCase() == 'html') + break; + node = node.parentNode; // keep walking if transparent + } + return '#ffffff'; +}; + +function getWidth(fx, i, width) { + switch(fx) { + case 'round': return Math.round(width*(1-Math.cos(Math.asin(i/width)))); + case 'cool': return Math.round(width*(1+Math.cos(Math.asin(i/width)))); + case 'sharp': return width-i; + case 'bite': return Math.round(width*(Math.cos(Math.asin((width-i-1)/width)))); + case 'slide': return Math.round(width*(Math.atan2(i,width/i))); + case 'jut': return Math.round(width*(Math.atan2(width,(width-i-1)))); + case 'curl': return Math.round(width*(Math.atan(i))); + case 'tear': return Math.round(width*(Math.cos(i))); + case 'wicked': return Math.round(width*(Math.tan(i))); + case 'long': return Math.round(width*(Math.sqrt(i))); + case 'sculpt': return Math.round(width*(Math.log((width-i-1),width))); + case 'dogfold': + case 'dog': return (i&1) ? (i+1) : width; + case 'dog2': return (i&2) ? (i+1) : width; + case 'dog3': return (i&3) ? (i+1) : width; + case 'fray': return (i%2)*width; + case 'notch': return width; + case 'bevelfold': + case 'bevel': return i+1; + case 'steep': return i/2 + 1; + case 'invsteep':return (width-i)/2+1; + } +}; + +$.fn.corner = function(options) { + // in 1.3+ we can fix mistakes with the ready state + if (this.length == 0) { + if (!$.isReady && this.selector) { + var s = this.selector, c = this.context; + $(function() { + $(s,c).corner(options); + }); + } + return this; + } + + return this.each(function(index){ + var $this = $(this), + // meta values override options + o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase(), + keep = /keep/.test(o), // keep borders? + cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]), // corner color + sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]), // strip color + width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10, // corner width + re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog|invsteep|steep/, + fx = ((o.match(re)||['round'])[0]), + fold = /dogfold|bevelfold/.test(o), + edges = { T:0, B:1 }, + opts = { + TL: /top|tl|left/.test(o), TR: /top|tr|right/.test(o), + BL: /bottom|bl|left/.test(o), BR: /bottom|br|right/.test(o) + }, + // vars used in func later + strip, pad, cssHeight, j, bot, d, ds, bw, i, w, e, c, common, $horz; + + if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR ) + opts = { TL:1, TR:1, BL:1, BR:1 }; + + // support native rounding + if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) { + if (opts.TL) + $this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px'); + if (opts.TR) + $this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px'); + if (opts.BL) + $this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px'); + if (opts.BR) + $this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px'); + return; + } + + strip = document.createElement('div'); + $(strip).css({ + overflow: 'hidden', + height: '1px', + minHeight: '1px', + fontSize: '1px', + backgroundColor: sc || 'transparent', + borderStyle: 'solid' + }); + + pad = { + T: parseInt($.css(this,'paddingTop'))||0, R: parseInt($.css(this,'paddingRight'))||0, + B: parseInt($.css(this,'paddingBottom'))||0, L: parseInt($.css(this,'paddingLeft'))||0 + }; + + if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE + if (!keep) this.style.border = 'none'; + strip.style.borderColor = cc || gpc(this.parentNode); + cssHeight = $(this).outerHeight(); + + for (j in edges) { + bot = edges[j]; + // only add stips if needed + if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) { + strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none'); + d = document.createElement('div'); + $(d).addClass('jquery-corner'); + ds = d.style; + + bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild); + + if (bot && cssHeight != 'auto') { + if ($.css(this,'position') == 'static') + this.style.position = 'relative'; + ds.position = 'absolute'; + ds.bottom = ds.left = ds.padding = ds.margin = '0'; + if (expr) + ds.setExpression('width', 'this.parentNode.offsetWidth'); + else + ds.width = '100%'; + } + else if (!bot && $.browser.msie) { + if ($.css(this,'position') == 'static') + this.style.position = 'relative'; + ds.position = 'absolute'; + ds.top = ds.left = ds.right = ds.padding = ds.margin = '0'; + + // fix ie6 problem when blocked element has a border width + if (expr) { + bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth'); + ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"'); + } + else + ds.width = '100%'; + } + else { + ds.position = 'relative'; + ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : + (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px'; + } + + for (i=0; i < width; i++) { + w = Math.max(0,getWidth(fx,i, width)); + e = strip.cloneNode(false); + e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px'; + bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild); + } + + if (fold && $.support.boxModel) { + if (bot && noBottomFold) continue; + for (c in opts) { + if (!opts[c]) continue; + if (bot && (c == 'TL' || c == 'TR')) continue; + if (!bot && (c == 'BL' || c == 'BR')) continue; + + common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor }; + $horz = $('
      ').css(common).css({ width: width + 'px', height: '1px' }); + switch(c) { + case 'TL': $horz.css({ bottom: 0, left: 0 }); break; + case 'TR': $horz.css({ bottom: 0, right: 0 }); break; + case 'BL': $horz.css({ top: 0, left: 0 }); break; + case 'BR': $horz.css({ top: 0, right: 0 }); break; + } + d.appendChild($horz[0]); + + var $vert = $('
      ').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' }); + switch(c) { + case 'TL': $vert.css({ left: width }); break; + case 'TR': $vert.css({ right: width }); break; + case 'BL': $vert.css({ left: width }); break; + case 'BR': $vert.css({ right: width }); break; + } + d.appendChild($vert[0]); + } + } + } + } + }); +}; + +$.fn.uncorner = function() { + if (radius || moz || webkit) + this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0); + $('div.jquery-corner', this).remove(); + return this; +}; + +// expose options +$.fn.corner.defaults = { + useNative: true, // true if plugin should attempt to use native browser support for border radius rounding + metaAttr: 'data-corner' // name of meta attribute to use for options +}; + +})(jQuery); diff --git a/v3/js/jquery.jsPlumb-1.3.10-all-min.js b/v3/js/jquery.jsPlumb-1.3.10-all-min.js new file mode 100644 index 000000000..3171abe1b --- /dev/null +++ b/v3/js/jquery.jsPlumb-1.3.10-all-min.js @@ -0,0 +1 @@ +jsPlumbUtil={isArray:function(b){return Object.prototype.toString.call(b)==="[object Array]"},isString:function(a){return typeof a==="string"},isObject:function(a){return Object.prototype.toString.call(a)==="[object Object]"},convertStyle:function(b,a){if("transparent"===b){return b}var g=b,f=function(h){return h.length==1?"0"+h:h},c=function(h){return f(Number(h).toString(16))},d=/(rgb[a]?\()(.*)(\))/;if(b.match(d)){var e=b.match(d)[2].split(",");g="#"+c(e[0])+c(e[1])+c(e[2]);if(!a&&e.length==4){g=g+c(e[3])}}return g},gradient:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];return(a[1]-b[1])/(a[0]-b[0])},normal:function(b,a){return -1/jsPlumbUtil.gradient(b,a)},lineLength:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];return Math.sqrt(Math.pow(a[1]-b[1],2)+Math.pow(a[0]-b[0],2))},segment:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];if(a[0]>b[0]){return(a[1]>b[1])?2:1}else{return(a[1]>b[1])?3:4}},intersects:function(f,e){var c=f.x,a=f.x+f.w,k=f.y,h=f.y+f.h,d=e.x,b=e.x+e.w,i=e.y,g=e.y+e.h;return((c<=d&&d<=a)&&(k<=i&&i<=h))||((c<=b&&b<=a)&&(k<=i&&i<=h))||((c<=d&&d<=a)&&(k<=g&&g<=h))||((c<=b&&d<=a)&&(k<=g&&g<=h))||((d<=c&&c<=b)&&(i<=k&&k<=g))||((d<=a&&a<=b)&&(i<=k&&k<=g))||((d<=c&&c<=b)&&(i<=h&&h<=g))||((d<=a&&c<=b)&&(i<=h&&h<=g))},segmentMultipliers:[null,[1,-1],[1,1],[-1,1],[-1,-1]],inverseSegmentMultipliers:[null,[-1,-1],[-1,1],[1,1],[1,-1]],pointOnLine:function(a,e,b){var d=jsPlumbUtil.gradient(a,e),i=jsPlumbUtil.segment(a,e),h=b>0?jsPlumbUtil.segmentMultipliers[i]:jsPlumbUtil.inverseSegmentMultipliers[i],c=Math.atan(d),f=Math.abs(b*Math.sin(c))*h[1],g=Math.abs(b*Math.cos(c))*h[0];return{x:a.x+g,y:a.y+f}},perpendicularLineTo:function(c,d,e){var b=jsPlumbUtil.gradient(c,d),f=Math.atan(-1/b),g=e/2*Math.sin(f),a=e/2*Math.cos(f);return[{x:d.x+a,y:d.y+g},{x:d.x-a,y:d.y-g}]},findWithFunction:function(b,d){if(b){for(var c=0;c-1){c.splice(b,1)}return b!=-1},remove:function(b,c){var a=jsPlumbUtil.indexOf(b,c);if(a>-1){b.splice(a,1)}return a!=-1},addWithFunction:function(c,b,a){if(jsPlumbUtil.findWithFunction(c,a)==-1){c.push(b)}},addToList:function(d,b,c){var a=d[b];if(a==null){a=[],d[b]=a}a.push(c);return a},EventGenerator:function(){var c={},b=this;var a=["ready"];this.bind=function(d,e){jsPlumbUtil.addToList(c,d,e);return b};this.fire=function(g,h,d){if(c[g]){for(var f=0;f';var K=L.firstChild;K.style.behavior="url(#default#VML)";b.vml=K?typeof K.adj=="object":true;L.parentNode.removeChild(L)}return b.vml};var i=jsPlumbUtil.findWithFunction,J=jsPlumbUtil.indexOf,D=jsPlumbUtil.removeWithFunction,m=jsPlumbUtil.remove,u=jsPlumbUtil.addWithFunction,l=jsPlumbUtil.addToList,n=jsPlumbUtil.isArray,C=jsPlumbUtil.isString,w=jsPlumbUtil.isObject;if(!window.console){window.console={time:function(){},timeEnd:function(){},group:function(){},groupEnd:function(){},log:function(){}}}var x=null,d=function(K,L){return p.CurrentLibrary.getAttribute(F(K),L)},f=function(L,M,K){p.CurrentLibrary.setAttribute(F(L),M,K)},B=function(L,K){p.CurrentLibrary.addClass(F(L),K)},k=function(L,K){return p.CurrentLibrary.hasClass(F(L),K)},o=function(L,K){p.CurrentLibrary.removeClass(F(L),K)},F=function(K){return p.CurrentLibrary.getElementObject(K)},t=function(K){return p.CurrentLibrary.getOffset(F(K))},a=function(K){return p.CurrentLibrary.getSize(F(K))},q=jsPlumbUtil.log,I=jsPlumbUtil.group,h=jsPlumbUtil.groupEnd,H=jsPlumbUtil.time,v=jsPlumbUtil.timeEnd,r=function(){return""+(new Date()).getTime()},E=function(Z){var U=this,aa=arguments,R=false,O=Z.parameters||{},M=U.idPrefix,W=M+(new Date()).getTime(),V=null,ab=null;U._jsPlumb=Z._jsPlumb;U.getId=function(){return W};U.tooltip=Z.tooltip;U.hoverClass=Z.hoverClass||U._jsPlumb.Defaults.HoverClass||p.Defaults.HoverClass;jsPlumbUtil.EventGenerator.apply(this);this.clone=function(){var ac=new Object();U.constructor.apply(ac,aa);return ac};this.getParameter=function(ac){return O[ac]},this.getParameters=function(){return O},this.setParameter=function(ac,ad){O[ac]=ad},this.setParameters=function(ac){O=ac},this.overlayPlacements=[];var N=Z.beforeDetach;this.isDetachAllowed=function(ac){var ad=U._jsPlumb.checkCondition("beforeDetach",ac);if(N){try{ad=N(ac)}catch(ae){q("jsPlumb: beforeDetach callback failed",ae)}}return ad};var Q=Z.beforeDrop;this.isDropAllowed=function(ah,ae,af,ac,ad){var ag=U._jsPlumb.checkCondition("beforeDrop",{sourceId:ah,targetId:ae,scope:af,connection:ac,dropEndpoint:ad});if(Q){try{ag=Q({sourceId:ah,targetId:ae,scope:af,connection:ac,dropEndpoint:ad})}catch(ai){q("jsPlumb: beforeDrop callback failed",ai)}}return ag};var X=function(){if(V&&ab){var ac={};p.extend(ac,V);p.extend(ac,ab);delete U.hoverPaintStyle;if(ac.gradient&&V.fillStyle){delete ac.gradient}ab=ac}};this.setPaintStyle=function(ac,ad){V=ac;U.paintStyleInUse=V;X();if(!ad){U.repaint()}};this.getPaintStyle=function(){return V};this.setHoverPaintStyle=function(ac,ad){ab=ac;X();if(!ad){U.repaint()}};this.getHoverPaintStyle=function(){return ab};this.setHover=function(ac,ae,ad){if(!U._jsPlumb.currentlyDragging&&!U._jsPlumb.isHoverSuspended()){R=ac;if(U.hoverClass!=null&&U.canvas!=null){if(ac){L.addClass(U.canvas,U.hoverClass)}else{L.removeClass(U.canvas,U.hoverClass)}}if(ab!=null){U.paintStyleInUse=ac?ab:V;ad=ad||r();U.repaint({timestamp:ad,recalc:false})}if(U.getAttachedElements&&!ae){Y(ac,r(),U)}}};this.isHover=function(){return R};var L=p.CurrentLibrary,K=["click","dblclick","mouseenter","mouseout","mousemove","mousedown","mouseup","contextmenu"],T={mouseout:"mouseexit"},P=function(ae,af,ad){var ac=T[ad]||ad;L.bind(ae,ad,function(ag){af.fire(ac,af,ag)})},S=function(ae,ad){var ac=T[ad]||ad;L.unbind(ae,ad)};this.attachListeners=function(ad,ae){for(var ac=0;ac1){for(var ac=0;ac=0?U.overlays[V]:null};this.getOverlays=function(){return U.overlays};this.hideOverlay=function(W){var V=U.getOverlay(W);if(V){V.hide()}};this.hideOverlays=function(){for(var V=0;V0){try{for(var bw=0;bw0?J(bJ,bI)!=-1:true},bA=(!bw&&bD.length>1)?{}:[],bG=function(bJ,bK){if(!bw&&bD.length>1){var bI=bA[bJ];if(bI==null){bI=[];bA[bJ]=bI}bI.push(bK)}else{bA.push(bK)}};for(var bz in aY){if(bx(bD,bz)){for(var by=0;by=4)?[bA[2],bA[3]]:[0,0],offsets:(bA.length==6)?[bA[4],bA[5]]:[0,0],elementId:bx};by=new aa(bz);by.clone=function(){return new aa(bz)}}}}}if(!by.id){by.id="anchor_"+ak()}return by};this.makeAnchors=function(by,bw,bv){var bz=[];for(var bx=0;bx0&&bP>=ap[bI]){console.log("target element "+bI+" is full.");return false}bn.currentlyDragging=false;var bZ=F(bD.getDragObject(arguments)),bO=d(bZ,"dragId"),bX=d(bZ,"originalScope"),bU=bf[bO],bM=bU.endpoints[0],bL=bw.endpoint?p.extend({},bw.endpoint):{};bM.anchor.locked=false;if(bX){bD.setDragScope(bZ,bX)}var bS=proxyComponent.isDropAllowed(bU.sourceId,K(bK),bU.scope,bU,null);if(bU.endpointsToDeleteOnDetach){if(bM===bU.endpointsToDeleteOnDetach[0]){bU.endpointsToDeleteOnDetach[0]=null}else{if(bM===bU.endpointsToDeleteOnDetach[1]){bU.endpointsToDeleteOnDetach[1]=null}}}if(bU.suspendedEndpoint){bU.targetId=bU.suspendedEndpoint.elementId;bU.target=bD.getElementObject(bU.suspendedEndpoint.elementId);bU.endpoints[1]=bU.suspendedEndpoint}if(bS){bM.detach(bU,false,true,false);var bY=aH[bI]||bn.addEndpoint(bK,bw);if(bw.uniqueEndpoint){aH[bI]=bY}bY._makeTargetCreator=true;if(bY.anchor.positionFinder!=null){var bV=bD.getUIPosition(arguments),bR=bD.getOffset(bK),bW=bD.getSize(bK),bQ=bY.anchor.positionFinder(bV,bR,bW,bY.anchor.constructorParams);bY.anchor.x=bQ[0];bY.anchor.y=bQ[1]}var bT=bn.connect({source:bM,target:bY,scope:bX,previousConnection:bU,container:bU.parent,deleteEndpointsOnDetach:bA,doNotFireConnectionEvent:bM.endpointWillMoveAfterConnection});if(bU.endpoints[1]._makeTargetCreator&&bU.endpoints[1].connections.length<2){bn.deleteEndpoint(bU.endpoints[1])}if(bA){bT.endpointsToDeleteOnDetach=[bM,bY]}bT.repaint()}else{if(bU.suspendedEndpoint){if(bM.isReattach){bU.setHover(false);bU.floatingAnchorIndex=null;bU.suspendedEndpoint.addConnection(bU);bn.repaint(bM.elementId)}else{bM.detach(bU,false,true,true,bN)}}}};var bJ=bD.dragEvents.drop;bH.scope=bH.scope||bE;bH[bJ]=am(bH[bJ],bG);bD.initDroppable(bK,bH,true)};by=aI(by);var bC=by.length&&by.constructor!=String?by:[by];for(var bB=0;bB0?bF[0]:null,bA=bF.length>0?0:-1,bE=this,bz=function(bI,bG,bM,bL,bH){var bK=bL[0]+(bI.x*bH[0]),bJ=bL[1]+(bI.y*bH[1]);return Math.sqrt(Math.pow(bG-bK,2)+Math.pow(bM-bJ,2))},bv=bw||function(bQ,bH,bI,bJ,bG){var bL=bI[0]+(bJ[0]/2),bK=bI[1]+(bJ[1]/2);var bN=-1,bP=Infinity;for(var bM=0;bM=by.left)||(bB.left<=by.right&&bB.right>=by.right)||(bB.left<=by.left&&bB.right>=by.right)||(by.left<=bB.left&&by.right>=bB.right)),bG=((bB.top<=by.top&&bB.bottom>=by.top)||(bB.top<=by.bottom&&bB.bottom>=by.bottom)||(bB.top<=by.top&&bB.bottom>=by.bottom)||(by.top<=bB.top&&by.bottom>=bB.bottom));if(!(bA||bG)){var bD=null,bx=false,bv=false,bC=null;if(by.left>bB.left&&by.top>bB.top){bD=["right","top"]}else{if(by.left>bB.left&&bB.top>by.top){bD=["top","left"]}else{if(by.leftbB.top){bD=["left","top"]}}}}return{orientation:T.DIAGONAL,a:bD,theta:bw,theta2:bz}}else{if(bA){return{orientation:T.HORIZONTAL,a:bB.topbv[0]?1:-1},Z=function(bv){return function(bx,bw){var by=true;if(bv){if(bx[0][0]bw[0][1]}}else{if(bx[0][0]>bw[0][0]){by=true}else{by=bx[0][1]>bw[0][1]}}return by===false?-1:1}},O=function(bw,bv){var by=bw[0][0]<0?-Math.PI-bw[0][0]:Math.PI-bw[0][0],bx=bv[0][0]<0?-Math.PI-bv[0][0]:Math.PI-bv[0][0];if(by>bx){return 1}else{return bw[0][1]>bv[0][1]?1:-1}},a0={top:a8,right:Z(true),bottom:Z(true),left:O},ao=function(bv,bw){return bv.sort(bw)},al=function(bw,bv){var by=ae[bw],bz=ah[bw],bx=function(bG,bN,bC,bF,bL,bK,bB){if(bF.length>0){var bJ=ao(bF,a0[bG]),bH=bG==="right"||bG==="top",bA=a2(bG,bN,bC,bJ,bL,bK,bH);var bO=function(bR,bQ){var bP=bo([bQ[0],bQ[1]],bR.canvas);ai[bR.id]=[bP[0],bP[1],bQ[2],bQ[3]];aJ[bR.id]=bB};for(var bD=0;bD0){var bF=bA.getOffset(bG);bw[bD][bI]={id:bI,offset:{left:bF.left-bJ.left,top:bF.top-bJ.top}}}}}};bC(bz)};this.endpointAdded=function(bB){var bF=p.CurrentLibrary,bI=document.body,bz=bn.getId(bB),bH=bF.getDOMElement(bB),bA=bH.parentNode,bD=bA==bI;bv[bz]=bv[bz]?bv[bz]+1:1;while(bA!=bI){var bE=bn.getId(bA);if(by[bE]){var bK=-1,bG=bF.getElementObject(bA),bC=bF.getOffset(bG);if(bw[bE][bz]==null){var bJ=p.CurrentLibrary.getOffset(bB);bw[bE][bz]={id:bz,offset:{left:bJ.left-bC.left,top:bJ.top-bC.top}}}break}bA=bA.parentNode}};this.endpointDeleted=function(bA){if(bv[bA.elementId]){bv[bA.elementId]--;if(bv[bA.elementId]<=0){for(var bz in bw){delete bw[bz][bA.elementId]}}}};this.getElementsForDraggable=function(bz){return bw[bz]};this.reset=function(){by={};bx=[];bw={};bv={}}};bn.dragManager=new aV();var ax=function(bN){var bG=this,bx=true;bG.idPrefix="_jsplumb_c_";bG.defaultLabelLocation=0.5;bG.defaultOverlayKeys=["Overlays","ConnectionOverlays"];this.parent=bN.parent;z.apply(this,arguments);this.isVisible=function(){return bx};this.setVisible=function(bP){bx=bP;bG[bP?"showOverlays":"hideOverlays"]();if(bG.connector&&bG.connector.canvas){bG.connector.canvas.style.display=bP?"block":"none"}};this.source=F(bN.source);this.target=F(bN.target);if(bN.sourceEndpoint){this.source=bN.sourceEndpoint.endpointWillMoveTo||bN.sourceEndpoint.getElement()}if(bN.targetEndpoint){this.target=bN.targetEndpoint.getElement()}bG.previousConnection=bN.previousConnection;var bD=bN.cost;bG.getCost=function(){return bD};bG.setCost=function(bP){bD=bP};var bB=bN.bidirectional===false?false:true;bG.isBidirectional=function(){return bB};this.sourceId=d(this.source,"id");this.targetId=d(this.target,"id");this.getAttachedElements=function(){return bG.endpoints};this.scope=bN.scope;this.endpoints=[];this.endpointStyles=[];var bM=function(bQ,bP){if(bQ){return bn.makeAnchor(bQ,bP,bn)}},bK=function(bP,bV,bQ,bS,bT,bR,bU){if(bP){bG.endpoints[bV]=bP;bP.addConnection(bG)}else{if(!bQ.endpoints){bQ.endpoints=[null,null]}var b1=bQ.endpoints[bV]||bQ.endpoint||bn.Defaults.Endpoints[bV]||p.Defaults.Endpoints[bV]||bn.Defaults.Endpoint||p.Defaults.Endpoint;if(!bQ.endpointStyles){bQ.endpointStyles=[null,null]}if(!bQ.endpointHoverStyles){bQ.endpointHoverStyles=[null,null]}var bZ=bQ.endpointStyles[bV]||bQ.endpointStyle||bn.Defaults.EndpointStyles[bV]||p.Defaults.EndpointStyles[bV]||bn.Defaults.EndpointStyle||p.Defaults.EndpointStyle;if(bZ.fillStyle==null&&bR!=null){bZ.fillStyle=bR.strokeStyle}if(bZ.outlineColor==null&&bR!=null){bZ.outlineColor=bR.outlineColor}if(bZ.outlineWidth==null&&bR!=null){bZ.outlineWidth=bR.outlineWidth}var bY=bQ.endpointHoverStyles[bV]||bQ.endpointHoverStyle||bn.Defaults.EndpointHoverStyles[bV]||p.Defaults.EndpointHoverStyles[bV]||bn.Defaults.EndpointHoverStyle||p.Defaults.EndpointHoverStyle;if(bU!=null){if(bY==null){bY={}}if(bY.fillStyle==null){bY.fillStyle=bU.strokeStyle}}var bX=bQ.anchors?bQ.anchors[bV]:bQ.anchor?bQ.anchor:bM(bn.Defaults.Anchors[bV],bT)||bM(p.Defaults.Anchors[bV],bT)||bM(bn.Defaults.Anchor,bT)||bM(p.Defaults.Anchor,bT),b0=bQ.uuids?bQ.uuids[bV]:null,bW=aF({paintStyle:bZ,hoverPaintStyle:bY,endpoint:b1,connections:[bG],uuid:b0,anchor:bX,source:bS,scope:bQ.scope,container:bQ.container,reattach:bQ.reattach,detachable:bQ.detachable});bG.endpoints[bV]=bW;if(bQ.drawEndpoints===false){bW.setVisible(false,true,true)}return bW}};var bI=bK(bN.sourceEndpoint,0,bN,bG.source,bG.sourceId,bN.paintStyle,bN.hoverPaintStyle);if(bI){V(aT,this.sourceId,bI)}var by=((bG.sourceId==bG.targetId)&&bN.targetEndpoint==null)?bI:bN.targetEndpoint,bH=bK(by,1,bN,bG.target,bG.targetId,bN.paintStyle,bN.hoverPaintStyle);if(bH){V(aT,this.targetId,bH)}if(!this.scope){this.scope=this.endpoints[0].scope}if(bN.deleteEndpointsOnDetach){bG.endpointsToDeleteOnDetach=[bI,bH]}var bw=bn.Defaults.ConnectionsDetachable;if(bN.detachable===false){bw=false}if(bG.endpoints[0].connectionsDetachable===false){bw=false}if(bG.endpoints[1].connectionsDetachable===false){bw=false}if(bD==null){bD=bG.endpoints[0].getConnectionCost()}if(bN.bidirectional==null){bB=bG.endpoints[0].areConnectionsBidirectional()}this.isDetachable=function(){return bw===true};this.setDetachable=function(bP){bw=bP===true};var bO=p.extend({},this.endpoints[0].getParameters());p.extend(bO,this.endpoints[1].getParameters());p.extend(bO,bG.getParameters());bG.setParameters(bO);var bE=bG.setHover;bG.setHover=function(bP){bG.connector.setHover.apply(bG.connector,arguments);bE.apply(bG,arguments)};var bL=function(bP){if(x==null){bG.setHover(bP,false)}};this.setConnector=function(bP,bQ){if(bG.connector!=null){aX(bG.connector.getDisplayElements(),bG.parent)}var bR={_jsPlumb:bG._jsPlumb,parent:bN.parent,cssClass:bN.cssClass,container:bN.container,tooltip:bG.tooltip};if(C(bP)){this.connector=new p.Connectors[X][bP](bR)}else{if(n(bP)){this.connector=new p.Connectors[X][bP[0]](p.extend(bP[1],bR))}}bG.canvas=bG.connector.canvas;G(bG.connector,bG,bL);if(!bQ){bG.repaint()}};bG.setConnector(this.endpoints[0].connector||this.endpoints[1].connector||bN.connector||bn.Defaults.Connector||p.Defaults.Connector,true);this.setPaintStyle(this.endpoints[0].connectorStyle||this.endpoints[1].connectorStyle||bN.paintStyle||bn.Defaults.PaintStyle||p.Defaults.PaintStyle,true);this.setHoverPaintStyle(this.endpoints[0].connectorHoverStyle||this.endpoints[1].connectorHoverStyle||bN.hoverPaintStyle||bn.Defaults.HoverPaintStyle||p.Defaults.HoverPaintStyle,true);this.paintStyleInUse=this.getPaintStyle();this.moveParent=function(bS){var bR=p.CurrentLibrary,bQ=bR.getParent(bG.connector.canvas);if(bG.connector.bgCanvas){bR.removeElement(bG.connector.bgCanvas,bQ);bR.appendElement(bG.connector.bgCanvas,bS)}bR.removeElement(bG.connector.canvas,bQ);bR.appendElement(bG.connector.canvas,bS);for(var bP=0;bP0){bO.connections[0].setHover(b2,false)}else{bO.setHover(b2)}};G(bO.endpoint,bO,b1);this.setPaintStyle(b0.paintStyle||b0.style||bn.Defaults.EndpointStyle||p.Defaults.EndpointStyle,true);this.setHoverPaintStyle(b0.hoverPaintStyle||bn.Defaults.EndpointHoverStyle||p.Defaults.EndpointHoverStyle,true);this.paintStyleInUse=this.getPaintStyle();var bJ=this.getPaintStyle();this.connectorStyle=b0.connectorStyle;this.connectorHoverStyle=b0.connectorHoverStyle;this.connectorOverlays=b0.connectorOverlays;this.connector=b0.connector;this.connectorTooltip=b0.connectorTooltip;this.isSource=b0.isSource||false;this.isTarget=b0.isTarget||false;var bU=b0.maxConnections||bn.Defaults.MaxConnections;this.getAttachedElements=function(){return bO.connections};this.canvas=this.endpoint.canvas;this.connections=b0.connections||[];this.scope=b0.scope||Q;this.timestamp=null;bO.isReattach=b0.reattach||false;bO.connectionsDetachable=bn.Defaults.ConnectionsDetachable;if(b0.connectionsDetachable===false||b0.detachable===false){bO.connectionsDetachable=false}var bI=b0.dragAllowedWhenFull||true;this.computeAnchor=function(b2){return bO.anchor.compute(b2)};this.addConnection=function(b2){bO.connections.push(b2)};this.detach=function(b3,b8,b4,cb,b2){var ca=i(bO.connections,function(cd){return cd.id==b3.id}),b9=false;cb=(cb!==false);if(ca>=0){if(b4||b3._forceDetach||b3.isDetachable()||b3.isDetachAllowed(b3)){var cc=b3.endpoints[0]==bO?b3.endpoints[1]:b3.endpoints[0];if(b4||b3._forceDetach||(bO.isDetachAllowed(b3))){bO.connections.splice(ca,1);if(!b8){cc.detach(b3,true,b4);if(b3.endpointsToDeleteOnDetach){for(var b7=0;b70){bO.detach(bO.connections[0],false,true,b3,b2)}};this.detachFrom=function(b5,b4,b2){var b6=[];for(var b3=0;b3=0){bO.connections.splice(b2,1)}};this.getElement=function(){return bN};this.setElement=function(b5,b2){var b7=K(b5);D(aT[bO.elementId],function(b8){return b8.id==bO.id});bN=F(b5);bF=K(bN);bO.elementId=bF;var b6=aw({source:b7,container:b2}),b4=bz.getParent(bO.canvas);bz.removeElement(bO.canvas,b4);bz.appendElement(bO.canvas,b6);for(var b3=0;b30){var ce=bK(b5.elementWithPrecedence),cg=ce.endpoints[0]==bO?1:0,b7=cg==0?ce.sourceId:ce.targetId,cd=ah[b7],cf=ae[b7];b4.txy=[cd.left,cd.top];b4.twh=cf;b4.tElement=ce.endpoints[cg]}b8=bO.anchor.compute(b4)}var cc=bL.compute(b8,bO.anchor.getOrientation(bO),bO.paintStyleInUse,b6||bO.paintStyleInUse);bL.paint(cc,bO.paintStyleInUse,bO.anchor);bO.timestamp=cb;for(var b9=0;b90?t:m+t:t*m;return jsPlumbUtil.pointOnLine({x:h,y:g},{x:d,y:c},s)}}};this.gradientAtPoint=function(s){return e};this.pointAlongPathFrom=function(s,w,v){var u=r.pointOnPath(s,v),t=s==1?{x:h+((d-h)*10),y:g+((g-c)*10)}:{x:d,y:c};return jsPlumbUtil.pointOnLine(u,t,w)}};jsPlumb.Connectors.Bezier=function(v){var p=this;v=v||{};this.majorAnchor=v.curviness||150;this.minorAnchor=10;var t=null;this.type="Bezier";this._findControlPoint=function(H,w,C,x,A,F,y){var E=F.getOrientation(x),G=y.getOrientation(A),B=E[0]!=G[0]||E[1]==G[1],z=[],I=p.majorAnchor,D=p.minorAnchor;if(!B){if(E[0]==0){z.push(w[0]u){u=C}if(F<0){s+=F;var H=Math.abs(F);u+=H;q[0]+=H;f+=H;o+=H;l[0]+=H}var P=Math.min(e,n),N=Math.min(q[1],l[1]),B=Math.min(P,N),G=Math.max(e,n),E=Math.max(q[1],l[1]),y=Math.max(G,E);if(y>d){d=y}if(B<0){r+=B;var D=Math.abs(B);d+=D;q[1]+=D;e+=D;n+=D;l[1]+=D}if(L&&u0?0:1,w)}return w};this.pointOnPath=function(w,y){var x=c();w=m(x,w,y);return jsBezier.pointOnCurve(x,w)};this.gradientAtPoint=function(w,y){var x=c();w=m(x,w,y);return jsBezier.gradientAtPoint(x,w)};this.pointAlongPathFrom=function(w,z,y){var x=c();w=m(x,w,y);return jsBezier.pointAlongCurveFrom(x,w,z)}};jsPlumb.Connectors.Flowchart=function(v){this.type="Flowchart";v=v||{};var n=this,c=v.stub||v.minStubLength||30,f=jsPlumbUtil.isArray(c)?c[0]:c,k=jsPlumbUtil.isArray(c)?c[1]:c,p=v.gap||0,q=[],i=0,d=[],m=[],r=[],o,l,u=-Infinity,s=-Infinity,w=Infinity,t=Infinity,x=function(z,y,D,C){var B=0;for(var A=0;A0?A/i:(i+A)/i}var y=d.length-1,z=1;for(var B=0;B=A){y=B;z=(A-d[B][0])/m[B];break}}return{segment:q[y],proportion:z,index:y}};this.compute=function(W,ak,z,Q,av,K,U,P,ap,am){q=[];d=[];i=0;m=[];u=s=-Infinity;w=t=Infinity;o=ak[0]au?0:1,ae=[1,0][ac];N=[];aw=[];N[ac]=W[ac]>ak[ac]?-1:1;aw[ac]=W[ac]>ak[ac]?1:-1;N[ae]=0;aw[ae]=0}if(al(f+k),X=Math.abs(H-aq)>(f+k),ah=Z+((L-Z)/2),af=Y+((J-Y)/2),O=((N[0]*aw[0])+(N[1]*aw[1])),ab=O==-1,ad=O==0,C=O==1;aj-=E;ai-=D;r=[aj,ai,al,au,I,H,ar,aq];var ao=[];var S=N[0]==0?"y":"x",M=ab?"opposite":C?"orthogonal":"perpendicular",F=jsPlumbUtil.segment([I,H],[ar,aq]),ag=N[S=="x"?0:1]==-1,R={x:[null,4,3,2,1],y:[null,2,1,4,3]};if(ag){F=R[S][F]}g(Z,Y,I,H,ar,aq);var T=function(az,ay,y,ax){return az+(ay*((1-y)*ax)+Math.max(f,k))},G={oppositex:function(){if(z.elementId==Q.elementId){var y=Y+((1-av.y)*ap.height)+Math.max(f,k);return[[Z,y],[L,y]]}else{if(V&&(F==1||F==2)){return[[ah,H],[ah,aq]]}else{return[[Z,af],[L,af]]}}},orthogonalx:function(){if(F==1||F==2){return[[L,Y]]}else{return[[Z,J]]}},perpendicularx:function(){var y=(aq+H)/2;if((F==1&&aw[1]==1)||(F==2&&aw[1]==-1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[L,Y]]}else{return[[Z,Y],[Z,y],[L,y]]}}else{if((F==3&&aw[1]==-1)||(F==4&&aw[1]==1)){return[[Z,y],[L,y]]}else{if((F==3&&aw[1]==1)||(F==4&&aw[1]==-1)){return[[Z,J]]}else{if((F==1&&aw[1]==-1)||(F==2&&aw[1]==1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[ah,Y],[ah,J]]}else{return[[Z,J]]}}}}}},oppositey:function(){if(z.elementId==Q.elementId){var y=Z+((1-av.x)*ap.width)+Math.max(f,k);return[[y,Y],[y,J]]}else{if(X&&(F==2||F==3)){return[[I,af],[ar,af]]}else{return[[ah,Y],[ah,J]]}}},orthogonaly:function(){if(F==2||F==3){return[[Z,J]]}else{return[[L,Y]]}},perpendiculary:function(){var y=(ar+I)/2;if((F==2&&aw[0]==-1)||(F==3&&aw[0]==1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[Z,J]]}else{return[[Z,af],[L,af]]}}else{if((F==1&&aw[0]==-1)||(F==4&&aw[0]==1)){var y=(ar+I)/2;return[[y,Y],[y,J]]}else{if((F==1&&aw[0]==1)||(F==4&&aw[0]==-1)){return[[L,Y]]}else{if((F==2&&aw[0]==1)||(F==3&&aw[0]==-1)){if(Math.abs(aq-H)>Math.max(f,k)){return[[Z,af],[L,af]]}else{return[[L,Y]]}}}}}}};var an=G[M+S]();if(an){for(var at=0;atr[3]){r[3]=s+(U*2)}if(u>r[2]){r[2]=u+(U*2)}return r};this.pointOnPath=function(y,z){return n.pointAlongPathFrom(y,0,z)};this.gradientAtPoint=function(y,z){return q[e(y,z)["index"]][4]};this.pointAlongPathFrom=function(F,y,E){var G=e(F,E),C=G.segment,z=G.proportion,B=q[G.index][5],A=q[G.index][4];var D={x:A==Infinity?C[2]:C[2]>C[0]?C[0]+((1-z)*B)-y:C[2]+(z*B)+y,y:A==0?C[3]:C[3]>C[1]?C[1]+((1-z)*B)-y:C[3]+(z*B)+y,segmentInfo:G};return D}};jsPlumb.Endpoints.Dot=function(d){this.type="Dot";var c=this;d=d||{};this.radius=d.radius||10;this.defaultOffset=0.5*this.radius;this.defaultInnerRadius=this.radius/3;this.compute=function(i,f,l,h){var g=l.radius||c.radius,e=i[0]-g,k=i[1]-g;return[e,k,g*2,g*2,g]}};jsPlumb.Endpoints.Rectangle=function(d){this.type="Rectangle";var c=this;d=d||{};this.width=d.width||20;this.height=d.height||20;this.compute=function(k,g,m,i){var h=m.width||c.width,f=m.height||c.height,e=k[0]-(h/2),l=k[1]-(f/2);return[e,l,h,f]}};var a=function(e){jsPlumb.DOMElementComponent.apply(this,arguments);var c=this;var d=[];this.getDisplayElements=function(){return d};this.appendDisplayElement=function(f){d.push(f)}};jsPlumb.Endpoints.Image=function(g){this.type="Image";a.apply(this,arguments);var l=this,f=false,e=g.width,d=g.height,i=null,c=g.endpoint;this.img=new Image();l.ready=false;this.img.onload=function(){l.ready=true;e=e||l.img.width;d=d||l.img.height;if(i){i(l)}};c.setImage=function(m,o){var n=m.constructor==String?m:m.src;i=o;l.img.src=m;if(l.canvas!=null){l.canvas.setAttribute("src",m)}};c.setImage(g.src||g.url,g.onload);this.compute=function(o,m,p,n){l.anchorPoint=o;if(l.ready){return[o[0]-e/2,o[1]-d/2,e,d]}else{return[0,0,0,0]}};l.canvas=document.createElement("img"),f=false;l.canvas.style.margin=0;l.canvas.style.padding=0;l.canvas.style.outline=0;l.canvas.style.position="absolute";var h=g.cssClass?" "+g.cssClass:"";l.canvas.className=jsPlumb.endpointClass+h;if(e){l.canvas.setAttribute("width",e)}if(d){l.canvas.setAttribute("height",d)}jsPlumb.appendElement(l.canvas,g.parent);l.attachListeners(l.canvas,l);var k=function(p,o,n){if(!f){l.canvas.setAttribute("src",l.img.src);l.appendDisplayElement(l.canvas);f=true}var m=l.anchorPoint[0]-(e/2),q=l.anchorPoint[1]-(d/2);jsPlumb.sizeCanvas(l.canvas,m,q,e,d)};this.paint=function(o,n,m){if(l.ready){k(o,n,m)}else{window.setTimeout(function(){l.paint(o,n,m)},200)}}};jsPlumb.Endpoints.Blank=function(d){var c=this;this.type="Blank";a.apply(this,arguments);this.compute=function(g,e,h,f){return[g[0],g[1],10,0]};c.canvas=document.createElement("div");c.canvas.style.display="block";c.canvas.style.width="1px";c.canvas.style.height="1px";c.canvas.style.background="transparent";c.canvas.style.position="absolute";c.canvas.className=c._jsPlumb.endpointClass;jsPlumb.appendElement(c.canvas,d.parent);this.paint=function(g,f,e){jsPlumb.sizeCanvas(c.canvas,g[0],g[1],g[2],g[3])}};jsPlumb.Endpoints.Triangle=function(c){this.type="Triangle";c=c||{};c.width=c.width||55;c.height=c.height||55;this.width=c.width;this.height=c.height;this.compute=function(i,f,l,h){var g=l.width||self.width,e=l.height||self.height,d=i[0]-(g/2),k=i[1]-(e/2);return[d,k,g,e]}};var b=function(e){var d=true,c=this;this.isAppendedAtTopLevel=true;this.component=e.component;this.loc=e.location==null?0.5:e.location;this.endpointLoc=e.endpointLocation==null?[0.5,0.5]:e.endpointLocation;this.setVisible=function(f){d=f;c.component.repaint()};this.isVisible=function(){return d};this.hide=function(){c.setVisible(false)};this.show=function(){c.setVisible(true)};this.incrementLocation=function(f){c.loc+=f;c.component.repaint()};this.setLocation=function(f){c.loc=f;c.component.repaint()};this.getLocation=function(){return c.loc}};jsPlumb.Overlays.Arrow=function(g){this.type="Arrow";b.apply(this,arguments);this.isAppendedAtTopLevel=false;g=g||{};var d=this;this.length=g.length||20;this.width=g.width||20;this.id=g.id;var f=(g.direction||1)<0?-1:1,e=g.paintStyle||{lineWidth:1},c=g.foldback||0.623;this.computeMaxSize=function(){return d.width*1.5};this.cleanup=function(){};this.draw=function(k,z,u){var o,v,h,p,n;if(k.pointAlongPathFrom){if(jsPlumbUtil.isString(d.loc)||d.loc>1||d.loc<0){var i=parseInt(d.loc);o=k.pointAlongPathFrom(i,f*d.length/2,true),v=k.pointOnPath(i,true),h=jsPlumbUtil.pointOnLine(o,v,d.length)}else{if(d.loc==1){o=k.pointOnPath(d.loc);v=k.pointAlongPathFrom(d.loc,-1);h=jsPlumbUtil.pointOnLine(o,v,d.length)}else{if(d.loc==0){h=k.pointOnPath(d.loc);v=k.pointAlongPathFrom(d.loc,1);o=jsPlumbUtil.pointOnLine(h,v,d.length)}else{o=k.pointAlongPathFrom(d.loc,f*d.length/2),v=k.pointOnPath(d.loc),h=jsPlumbUtil.pointOnLine(o,v,d.length)}}}p=jsPlumbUtil.perpendicularLineTo(o,h,d.width);n=jsPlumbUtil.pointOnLine(o,h,c*d.length);var y=Math.min(o.x,p[0].x,p[1].x),s=Math.max(o.x,p[0].x,p[1].x),x=Math.min(o.y,p[0].y,p[1].y),r=Math.max(o.y,p[0].y,p[1].y);var q={hxy:o,tail:p,cxy:n},t=e.strokeStyle||z.strokeStyle,w=e.fillStyle||z.strokeStyle,m=e.lineWidth||z.lineWidth;d.paint(k,q,m,t,w,u);return[y,s,x,r]}else{return[0,0,0,0]}}};jsPlumb.Overlays.PlainArrow=function(d){d=d||{};var c=jsPlumb.extend(d,{foldback:1});jsPlumb.Overlays.Arrow.call(this,c);this.type="PlainArrow"};jsPlumb.Overlays.Diamond=function(e){e=e||{};var c=e.length||40,d=jsPlumb.extend(e,{length:c/2,foldback:2});jsPlumb.Overlays.Arrow.call(this,d);this.type="Diamond"};jsPlumb.Overlays.Label=function(i){this.type="Label";jsPlumb.DOMElementComponent.apply(this,arguments);b.apply(this,arguments);this.labelStyle=i.labelStyle||jsPlumb.Defaults.LabelStyle;this.id=i.id;this.cachedDimensions=null;var e=i.label||"",c=this,f=false,k=document.createElement("div"),g=null;k.style.position="absolute";var d=i._jsPlumb.overlayClass+" "+(c.labelStyle.cssClass?c.labelStyle.cssClass:i.cssClass?i.cssClass:"");k.className=d;jsPlumb.appendElement(k,i.component.parent);jsPlumb.getId(k);c.attachListeners(k,c);c.canvas=k;var h=c.setVisible;c.setVisible=function(l){h(l);k.style.display=l?"block":"none"};this.getElement=function(){return k};this.cleanup=function(){if(k!=null){jsPlumb.CurrentLibrary.removeElement(k)}};this.setLabel=function(m){e=m;g=null;c.component.repaint()};this.getLabel=function(){return e};this.paint=function(l,n,m){if(!f){l.appendDisplayElement(k);c.attachListeners(k,l);f=true}k.style.left=(m[0]+n.minx)+"px";k.style.top=(m[1]+n.miny)+"px"};this.getTextDimensions=function(){if(typeof e=="function"){var l=e(c);k.innerHTML=l.replace(/\r\n/g,"
      ")}else{if(g==null){g=e;k.innerHTML=g.replace(/\r\n/g,"
      ")}}var n=jsPlumb.CurrentLibrary.getElementObject(k),m=jsPlumb.CurrentLibrary.getSize(n);return{width:m[0],height:m[1]}};this.computeMaxSize=function(l){var m=c.getTextDimensions(l);return m.width?Math.max(m.width,m.height)*1.5:0};this.draw=function(m,n,o){var s=c.getTextDimensions(m);if(s.width!=null){var p={x:0,y:0};if(m.pointOnPath){var q=c.loc,r=false;if(jsPlumbUtil.isString(c.loc)||c.loc<0||c.loc>1){q=parseInt(c.loc);r=true}p=m.pointOnPath(q,r)}else{var l=c.loc.constructor==Array?c.loc:c.endpointLoc;p={x:l[0]*o[2],y:l[1]*o[3]}}minx=p.x-(s.width/2),miny=p.y-(s.height/2);c.paint(m,{minx:minx,miny:miny,td:s,cxy:p},o);return[minx,minx+s.width,miny,miny+s.height]}else{return[0,0,0,0]}};this.reattachListeners=function(l){if(k){c.reattachListenersForElement(k,c,l)}}};jsPlumb.Overlays.GuideLines=function(){var c=this;c.length=50;c.lineWidth=5;this.type="GuideLines";b.apply(this,arguments);jsPlumb.jsPlumbUIComponent.apply(this,arguments);this.draw=function(e,l,k){var i=e.pointAlongPathFrom(c.loc,c.length/2),h=e.pointOnPath(c.loc),g=jsPlumbUtil.pointOnLine(i,h,c.length),f=jsPlumbUtil.perpendicularLineTo(i,g,40),d=jsPlumbUtil.perpendicularLineTo(g,i,20);c.paint(e,[i,g,f,d],c.lineWidth,"red",null,k);return[Math.min(i.x,g.x),Math.min(i.y,g.y),Math.max(i.x,g.x),Math.max(i.y,g.y)]};this.computeMaxSize=function(){return 50};this.cleanup=function(){}}})();(function(){var c=function(e,g,d,f){this.m=(f-g)/(d-e);this.b=-1*((this.m*e)-g);this.rectIntersect=function(q,p,s,o){var n=[];var k=(p-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*(q+s))+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}var k=((p+o)-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*q)+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}if(n.length==2){var m=(n[0][0]+n[1][0])/2,l=(n[0][1]+n[1][1])/2;n.push([m,l]);var i=m<=q+(s/2)?-1:1,r=l<=p+(o/2)?-1:1;n.push([i,r]);return n}return null}},a=function(e,g,d,f){if(e<=d&&f<=g){return 1}else{if(e<=d&&g<=f){return 2}else{if(d<=e&&f>=g){return 3}}}return 4},b=function(g,f,i,e,h,m,l,d,k){if(d<=k){return[g,f]}if(i==1){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==2){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}else{if(i==3){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==4){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}}}}};jsPlumb.Connectors.StateMachine=function(l){var u=this,n=null,o,m,g,e,p=[],d=l.curviness||10,k=l.margin||5,q=l.proximityLimit||80,f=l.orientation&&l.orientation=="clockwise",i=l.loopbackRadius||25,h=false,t=l.showLoopback!==false;this.type="StateMachine";l=l||{};this.compute=function(ad,H,W,I,ac,z,v,U){var Q=Math.abs(ad[0]-H[0]),Y=Math.abs(ad[1]-H[1]),S=0.45*Q,ab=0.45*Y;Q*=1.9;Y*=1.9;v=v||1;var O=Math.min(ad[0],H[0])-S,M=Math.min(ad[1],H[1])-ab;if(!t||(W.elementId!=I.elementId)){h=false;o=ad[0]0?0:1,v)}return v};this.pointOnPath=function(x,B){if(h){if(B){var y=Math.PI*2*i;x=x/y}if(x>0&&x<1){x=1-x}var z=(x*2*Math.PI)+(Math.PI/2),w=n[4]+(n[6]*Math.cos(z)),v=n[5]+(n[6]*Math.sin(z));return{x:w,y:v}}else{var A=r();x=s(A,x,B);return jsBezier.pointOnCurve(A,x)}};this.gradientAtPoint=function(v,y){if(h){if(y){var w=Math.PI*2*i;v=v/w}return Math.atan(v*2*Math.PI)}else{var x=r();v=s(x,v,y);return jsBezier.gradientAtPoint(x,v)}};this.pointAlongPathFrom=function(D,v,C){if(h){if(C){var B=Math.PI*2*i;D=D/B}if(D>0&&D<1){D=1-D}var B=2*Math.PI*n[6],w=v/B*2*Math.PI,z=(D*2*Math.PI)-w+(Math.PI/2),y=n[4]+(n[6]*Math.cos(z)),x=n[5]+(n[6]*Math.sin(z));return{x:y,y:x}}else{var A=r();D=s(A,D,C);return jsBezier.pointAlongCurveFrom(A,D,v)}}};jsPlumb.Connectors.canvas.StateMachine=function(f){f=f||{};var d=this,g=f.drawGuideline||true,e=f.avoidSelector;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.CanvasConnector.apply(this,arguments);this._paint=function(l){if(l.length==10){d.ctx.beginPath();d.ctx.moveTo(l[4],l[5]);d.ctx.bezierCurveTo(l[8],l[9],l[8],l[9],l[6],l[7]);d.ctx.stroke()}else{d.ctx.save();d.ctx.beginPath();var k=0,i=2*Math.PI,h=l[7];d.ctx.arc(l[4],l[5],l[6],0,i,h);d.ctx.stroke();d.ctx.closePath();d.ctx.restore()}};this.createGradient=function(i,h){return h.createLinearGradient(i[4],i[5],i[6],i[7])}};jsPlumb.Connectors.svg.StateMachine=function(){var d=this;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.SvgConnector.apply(this,arguments);this.getPath=function(e){if(e.length==10){return"M "+e[4]+" "+e[5]+" C "+e[8]+" "+e[9]+" "+e[8]+" "+e[9]+" "+e[6]+" "+e[7]}else{return"M"+(e[8]+4)+" "+e[9]+" A "+e[6]+" "+e[6]+" 0 1,0 "+(e[8]-4)+" "+e[9]}}};jsPlumb.Connectors.vml.StateMachine=function(){jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.VmlConnector.apply(this,arguments);var d=jsPlumb.vml.convertValue;this.getPath=function(k){if(k.length==10){return"m"+d(k[4])+","+d(k[5])+" c"+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+","+d(k[6])+","+d(k[7])+" e"}else{var h=d(k[8]-k[6]),g=d(k[9]-(2*k[6])),f=h+d(2*k[6]),e=g+d(2*k[6]),l=h+","+g+","+f+","+e;var i="ar "+l+","+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+" e";return i}}}})();(function(){var h={"stroke-linejoin":"joinstyle",joinstyle:"joinstyle",endcap:"endcap",miterlimit:"miterlimit"},c=null;if(document.createStyleSheet&&document.namespaces){var m=[".jsplumb_vml","jsplumb\\:textbox","jsplumb\\:oval","jsplumb\\:rect","jsplumb\\:stroke","jsplumb\\:shape","jsplumb\\:group"],g="behavior:url(#default#VML);position:absolute;";c=document.createStyleSheet();for(var r=0;r0&&C>0&&u=u&&w[2]<=C&&w[3]>=C)){return true}}var A=q.canvas.getContext("2d").getImageData(parseInt(u),parseInt(C),1,1);return A.data[0]!=0||A.data[1]!=0||A.data[2]!=0||A.data[3]!=0}return false};var p=false,o=false,t=null,s=false,r=function(v,u){return v!=null&&i(v,u)};this.mousemove=function(x){var z=n(x),w=f(x),v=document.elementFromPoint(w[0],w[1]),y=r(v,"_jsPlumb_overlay");var u=d==null&&(r(v,"_jsPlumb_endpoint")||r(v,"_jsPlumb_connector"));if(!p&&u&&q._over(x)){p=true;q.fire("mouseenter",q,x);return true}else{if(p&&(!q._over(x)||!u)&&!y){p=false;q.fire("mouseexit",q,x)}}q.fire("mousemove",q,x)};this.click=function(u){if(p&&q._over(u)&&!s){q.fire("click",q,u)}s=false};this.dblclick=function(u){if(p&&q._over(u)&&!s){q.fire("dblclick",q,u)}s=false};this.mousedown=function(u){if(q._over(u)&&!o){o=true;t=m(a(q.canvas));q.fire("mousedown",q,u)}};this.mouseup=function(u){o=false;q.fire("mouseup",q,u)};this.contextmenu=function(u){if(p&&q._over(u)&&!s){q.fire("contextmenu",q,u)}s=false}};var c=function(p){var o=document.createElement("canvas");p._jsPlumb.appendElement(o,p.parent);o.style.position="absolute";if(p["class"]){o.className=p["class"]}p._jsPlumb.getId(o,p.uuid);if(p.tooltip){o.setAttribute("title",p.tooltip)}return o};var l=function(p){k.apply(this,arguments);var o=[];this.getDisplayElements=function(){return o};this.appendDisplayElement=function(q){o.push(q)}};var h=jsPlumb.CanvasConnector=function(r){l.apply(this,arguments);var o=function(v,t){p.ctx.save();jsPlumb.extend(p.ctx,t);if(t.gradient){var u=p.createGradient(v,p.ctx);for(var s=0;s0?c[0].tagName:null},getUIPosition:function(c){if(c.length==1){ret={left:c[0].pageX,top:c[0].pageY}}else{var d=c[1],b=d.offset;ret=b||d.absolutePosition}return ret},hasClass:function(c,b){return c.hasClass(b)},initDraggable:function(c,b,d){b=b||{};b.helper=null;if(d){b.scope=b.scope||jsPlumb.Defaults.Scope}c.draggable(b)},initDroppable:function(c,b){b.scope=b.scope||jsPlumb.Defaults.Scope;c.droppable(b)},isAlreadyDraggable:function(b){b=jsPlumb.CurrentLibrary.getElementObject(b);return b.hasClass("ui-draggable")},isDragSupported:function(c,b){return c.draggable},isDropSupported:function(c,b){return c.droppable},removeClass:function(c,b){c=jsPlumb.CurrentLibrary.getElementObject(c);try{if(c[0].className.constructor==SVGAnimatedString){jsPlumb.util.svg.removeClass(c[0],b)}}catch(d){}c.removeClass(b)},removeElement:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).remove()},setAttribute:function(c,d,b){c.attr(d,b)},setDraggable:function(c,b){c.draggable("option","disabled",!b)},setDragScope:function(c,b){c.draggable("option","scope",b)},setOffset:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).offset(c)},trigger:function(d,e,b){var c=jQuery._data(jsPlumb.CurrentLibrary.getElementObject(d)[0],"handle");c(b)},unbind:function(b,c,d){b=jsPlumb.CurrentLibrary.getElementObject(b);b.unbind(c,d)}};a(document).ready(jsPlumb.init)})(jQuery);(function(){"undefined"==typeof Math.sgn&&(Math.sgn=function(l){return 0==l?0:0=64){x[0]=(C[0].x+C[B].x)/2;return 1}var p,u=C[0].y-C[B].y;y=C[B].x-C[0].x;q=C[0].x*C[B].y-C[B].x*C[0].y;s=max_distance_below=0;for(p=1;ps?s=r:r0?1:-1,r=null;n1){l.location=1}if(l.location<0){l.location=0}return i(m,l.location)},nearestPointOnCurve:function(m,l){var n=h(m,l);return{point:k(l,l.length-1,n.location,null,null),location:n.location}},pointOnCurve:c,pointAlongCurveFrom:function(m,l,n){return b(m,l,n).point},perpendicularToCurveAt:function(m,l,n,o){l=b(m,l,o==null?0:o);m=i(m,l.location);o=Math.atan(-1/m);m=n/2*Math.sin(o);n=n/2*Math.cos(o);return[{x:l.point.x+n,y:l.point.y+m},{x:l.point.x-n,y:l.point.y-m}]},locationAlongCurveFrom:function(m,l,n){return b(m,l,n).location}}})(); \ No newline at end of file diff --git a/v3/js/jquery.jsPlumb-1.3.15-all-min.js b/v3/js/jquery.jsPlumb-1.3.15-all-min.js new file mode 100644 index 000000000..3abdf47c9 --- /dev/null +++ b/v3/js/jquery.jsPlumb-1.3.15-all-min.js @@ -0,0 +1 @@ +jsPlumbUtil={isArray:function(b){return Object.prototype.toString.call(b)==="[object Array]"},isString:function(a){return typeof a==="string"},isBoolean:function(a){return typeof a==="boolean"},isObject:function(a){return Object.prototype.toString.call(a)==="[object Object]"},isDate:function(a){return Object.prototype.toString.call(a)==="[object Date]"},isFunction:function(a){return Object.prototype.toString.call(a)==="[object Function]"},clone:function(d){if(this.isString(d)){return new String(d)}else{if(this.isBoolean(d)){return new Boolean(d)}else{if(this.isDate(d)){return new Date(d.getTime())}else{if(this.isFunction(d)){return d}else{if(this.isArray(d)){var c=[];for(var e=0;eb[0]){return(a[1]>b[1])?2:1}else{return(a[1]>b[1])?3:4}},intersects:function(f,e){var c=f.x,a=f.x+f.w,k=f.y,h=f.y+f.h,d=e.x,b=e.x+e.w,i=e.y,g=e.y+e.h;return((c<=d&&d<=a)&&(k<=i&&i<=h))||((c<=b&&b<=a)&&(k<=i&&i<=h))||((c<=d&&d<=a)&&(k<=g&&g<=h))||((c<=b&&d<=a)&&(k<=g&&g<=h))||((d<=c&&c<=b)&&(i<=k&&k<=g))||((d<=a&&a<=b)&&(i<=k&&k<=g))||((d<=c&&c<=b)&&(i<=h&&h<=g))||((d<=a&&c<=b)&&(i<=h&&h<=g))},segmentMultipliers:[null,[1,-1],[1,1],[-1,1],[-1,-1]],inverseSegmentMultipliers:[null,[-1,-1],[-1,1],[1,1],[1,-1]],pointOnLine:function(a,e,b){var d=jsPlumbUtil.gradient(a,e),i=jsPlumbUtil.segment(a,e),h=b>0?jsPlumbUtil.segmentMultipliers[i]:jsPlumbUtil.inverseSegmentMultipliers[i],c=Math.atan(d),f=Math.abs(b*Math.sin(c))*h[1],g=Math.abs(b*Math.cos(c))*h[0];return{x:a.x+g,y:a.y+f}},perpendicularLineTo:function(c,d,e){var b=jsPlumbUtil.gradient(c,d),f=Math.atan(-1/b),g=e/2*Math.sin(f),a=e/2*Math.cos(f);return[{x:d.x+a,y:d.y+g},{x:d.x-a,y:d.y-g}]},findWithFunction:function(b,d){if(b){for(var c=0;c-1){c.splice(b,1)}return b!=-1},remove:function(b,c){var a=jsPlumbUtil.indexOf(b,c);if(a>-1){b.splice(a,1)}return a!=-1},addWithFunction:function(c,b,a){if(jsPlumbUtil.findWithFunction(c,a)==-1){c.push(b)}},addToList:function(d,b,c){var a=d[b];if(a==null){a=[],d[b]=a}a.push(c);return a},EventGenerator:function(){var c={},b=this;var a=["ready"];this.bind=function(d,e){jsPlumbUtil.addToList(c,d,e);return b};this.fire=function(g,h,d){if(c[g]){for(var f=0;f';var e=f.firstChild;e.style.behavior="url(#default#VML)";d.vml=e?typeof e.adj=="object":true;f.parentNode.removeChild(f)}return d.vml};var c=function(i){var h={},g=[],f={},e={};this.register=function(n){var m=jsPlumb.CurrentLibrary;n=m.getElementObject(n);var p=i.getId(n),l=m.getDOMElement(n),k=m.getOffset(n);if(!h[p]){h[p]=n;g.push(n);f[p]={}}var o=function(u,q){if(u){for(var r=0;r0){var s=m.getOffset(t);f[p][v]={id:v,offset:{left:s.left-k.left,top:s.top-k.top}}}o(u.childNodes[r])}}}};o(l)};this.endpointAdded=function(m){var r=jsPlumb.CurrentLibrary,u=document.body,k=i.getId(m),t=r.getDOMElement(m),l=t.parentNode,o=l==u;e[k]=e[k]?e[k]+1:1;while(l!=u){var q=i.getId(l,null,true);if(q&&h[q]){var w=-1,s=r.getElementObject(l),n=r.getOffset(s);if(f[q][k]==null){var v=jsPlumb.CurrentLibrary.getOffset(m);f[q][k]={id:k,offset:{left:v.left-n.left,top:v.top-n.top}}}break}l=l.parentNode}};this.endpointDeleted=function(l){if(e[l.elementId]){e[l.elementId]--;if(e[l.elementId]<=0){for(var k in f){delete f[k][l.elementId]}}}};this.getElementsForDraggable=function(k){return f[k]};this.reset=function(){h={};g=[];f={};e={}}};if(!window.console){window.console={time:function(){},timeEnd:function(){},group:function(){},groupEnd:function(){},log:function(){}}}window.jsPlumbAdapter={headless:false,appendToRoot:function(e){document.body.appendChild(e)},getRenderModes:function(){return["canvas","svg","vml"]},isRenderModeAvailable:function(e){return{canvas:b,svg:a,vml:d()}[e]},getDragManager:function(e){return new c(e)},setRenderMode:function(i){var h;if(i){i=i.toLowerCase();var f=this.isRenderModeAvailable("canvas"),e=this.isRenderModeAvailable("svg"),g=this.isRenderModeAvailable("vml");if(i==="svg"){if(e){h="svg"}else{if(f){h="canvas"}else{if(g){h="vml"}}}}else{if(i==="canvas"&&f){h="canvas"}else{if(g){h="vml"}}}}return h}}})();(function(){var g=jsPlumbUtil.findWithFunction,G=jsPlumbUtil.indexOf,A=jsPlumbUtil.removeWithFunction,k=jsPlumbUtil.remove,r=jsPlumbUtil.addWithFunction,i=jsPlumbUtil.addToList,l=jsPlumbUtil.isArray,z=jsPlumbUtil.isString,u=jsPlumbUtil.isObject;var v=null,c=function(H,I){return n.CurrentLibrary.getAttribute(C(H),I)},d=function(I,J,H){n.CurrentLibrary.setAttribute(C(I),J,H)},y=function(I,H){n.CurrentLibrary.addClass(C(I),H)},h=function(I,H){return n.CurrentLibrary.hasClass(C(I),H)},m=function(I,H){n.CurrentLibrary.removeClass(C(I),H)},C=function(H){return n.CurrentLibrary.getElementObject(H)},s=function(I,H){var K=n.CurrentLibrary.getOffset(C(I));if(H!=null){var J=H.getZoom();return{left:K.left/J,top:K.top/J}}else{return K}},a=function(H){return n.CurrentLibrary.getSize(C(H))},o=jsPlumbUtil.log,F=jsPlumbUtil.group,f=jsPlumbUtil.groupEnd,E=jsPlumbUtil.time,t=jsPlumbUtil.timeEnd,p=function(){return""+(new Date()).getTime()},B=function(aa){var U=this,ab=arguments,S=false,M=aa.parameters||{},K=U.idPrefix,X=K+(new Date()).getTime(),W=null,ac=null;U._jsPlumb=aa._jsPlumb;U.getId=function(){return X};U.tooltip=aa.tooltip;U.hoverClass=aa.hoverClass||U._jsPlumb.Defaults.HoverClass||n.Defaults.HoverClass;jsPlumbUtil.EventGenerator.apply(this);this.clone=function(){var ad=new Object();U.constructor.apply(ad,ab);return ad};this.getParameter=function(ad){return M[ad]},this.getParameters=function(){return M},this.setParameter=function(ad,ae){M[ad]=ae},this.setParameters=function(ad){M=ad},this.overlayPlacements=[];var L=aa.beforeDetach;this.isDetachAllowed=function(ad){var ae=U._jsPlumb.checkCondition("beforeDetach",ad);if(L){try{ae=L(ad)}catch(af){o("jsPlumb: beforeDetach callback failed",af)}}return ae};var O=aa.beforeDrop;this.isDropAllowed=function(ai,af,ag,ad,ae){var ah=U._jsPlumb.checkCondition("beforeDrop",{sourceId:ai,targetId:af,scope:ag,connection:ad,dropEndpoint:ae});if(O){try{ah=O({sourceId:ai,targetId:af,scope:ag,connection:ad,dropEndpoint:ae})}catch(aj){o("jsPlumb: beforeDrop callback failed",aj)}}return ah};var Y=function(){if(W&&ac){var ad={};n.extend(ad,W);n.extend(ad,ac);delete U.hoverPaintStyle;if(ad.gradient&&W.fillStyle){delete ad.gradient}ac=ad}};this.setPaintStyle=function(ad,ae){W=ad;U.paintStyleInUse=W;Y();if(!ae){U.repaint()}};this.getPaintStyle=function(){return W};this.setHoverPaintStyle=function(ad,ae){ac=ad;Y();if(!ae){U.repaint()}};this.getHoverPaintStyle=function(){return ac};this.setHover=function(ad,af,ae){if(!U._jsPlumb.currentlyDragging&&!U._jsPlumb.isHoverSuspended()){S=ad;if(U.hoverClass!=null&&U.canvas!=null){if(ad){J.addClass(U.canvas,U.hoverClass)}else{J.removeClass(U.canvas,U.hoverClass)}}if(ac!=null){U.paintStyleInUse=ad?ac:W;ae=ae||p();U.repaint({timestamp:ae,recalc:false})}if(U.getAttachedElements&&!af){Z(ad,p(),U)}}};this.isHover=function(){return S};var V=null;this.setZIndex=function(ad){V=ad};this.getZIndex=function(){return V};var J=n.CurrentLibrary,I=["click","dblclick","mouseenter","mouseout","mousemove","mousedown","mouseup","contextmenu"],T={mouseout:"mouseexit"},N=function(af,ag,ae){var ad=T[ae]||ae;J.bind(af,ae,function(ah){ag.fire(ad,ag,ah)})},R=function(af,ae){var ad=T[ae]||ae;J.unbind(af,ae)};this.attachListeners=function(ae,af){for(var ad=0;ad1){for(var ad=0;ad=0?S.overlays[T]:null};this.getOverlays=function(){return S.overlays};this.hideOverlay=function(U){var T=S.getOverlay(U);if(T){T.hide()}};this.hideOverlays=function(){for(var T=0;T0){try{for(var bA=0;bA0?G(bB,bA)!=-1:!bz};this.getConnections=function(bI,bA){if(!bI){bI={}}else{if(bI.constructor==String){bI={scope:bI}}}var bH=bI.scope||br.getDefaultScope(),bG=bv(bH,true),bz=bv(bI.source),bE=bv(bI.target),bD=(!bA&&bG.length>1)?{}:[],bJ=function(bL,bM){if(!bA&&bG.length>1){var bK=bD[bL];if(bK==null){bK=[];bD[bL]=bK}bK.push(bM)}else{bD.push(bM)}};for(var bC in a0){if(aI(bG,bC)){for(var bB=0;bB0&&!bL.isSource),bG=(bC&&bJ.length>0&&!bL.isTarget);if(bN||bG){continue inner}bP.push(bL)}}}}return bf(bP)};this.getAllConnections=function(){return a0};this.getDefaultScope=function(){return R};this.getEndpoint=ax;this.getEndpoints=function(bz){return aV[H(bz)]};this.getId=H;this.getOffset=function(bA){var bz=aj[bA];return X({elId:bA})};this.getSelector=function(bz){return n.CurrentLibrary.getSelector(bz)};this.getSize=function(bA){var bz=ag[bA];if(!bz){X({elId:bA})}return ag[bA]};this.appendElement=aX;var aU=false;this.isHoverSuspended=function(){return aU};this.setHoverSuspended=function(bz){aU=bz};var aY=function(bz){return function(){return jsPlumbAdapter.isRenderModeAvailable(bz)}};this.isCanvasAvailable=aY("canvas");this.isSVGAvailable=aY("svg");this.isVMLAvailable=aY("vml");this.hide=function(bz,bA){a7(bz,"none",bA)};this.idstamp=an;this.init=function(){if(!K){br.setRenderMode(br.Defaults.RenderMode);var bz=function(bA){n.CurrentLibrary.bind(document,bA,function(bG){if(!br.currentlyDragging&&Y==n.CANVAS){for(var bF in a0){var bH=a0[bF];for(var bD=0;bD=4)?[bE[2],bE[3]]:[0,0],offsets:(bE.length==6)?[bE[4],bE[5]]:[0,0],elementId:bB};bC=new ab(bD);bC.clone=function(){return new ab(bD)}}}}}if(!bC.id){bC.id="anchor_"+an()}return bC};this.makeAnchors=function(bC,bA,bz){var bD=[];for(var bB=0;bB0&&bT>=at[bM]){if(bz){bz({element:bO,connection:bY},bR)}return false}bQ.anchor.locked=false;if(b1){bH.setDragScope(b3,b1)}var bW=proxyComponent.isDropAllowed(bY.sourceId,H(bO),bY.scope,bY,null);if(bY.endpointsToDeleteOnDetach){if(bQ===bY.endpointsToDeleteOnDetach[0]){bY.endpointsToDeleteOnDetach[0]=null}else{if(bQ===bY.endpointsToDeleteOnDetach[1]){bY.endpointsToDeleteOnDetach[1]=null}}}if(bY.suspendedEndpoint){bY.targetId=bY.suspendedEndpoint.elementId;bY.target=bH.getElementObject(bY.suspendedEndpoint.elementId);bY.endpoints[1]=bY.suspendedEndpoint}if(bW){bQ.detach(bY,false,true,false);var b2=aK[bM]||br.addEndpoint(bO,bA);if(bA.uniqueEndpoint){aK[bM]=b2}b2._makeTargetCreator=true;if(b2.anchor.positionFinder!=null){var bZ=bH.getUIPosition(arguments,br.getZoom()),bV=s(bO,br),b0=a(bO),bU=b2.anchor.positionFinder(bZ,bV,b0,b2.anchor.constructorParams);b2.anchor.x=bU[0];b2.anchor.y=bU[1]}var bX=br.connect({source:bQ,target:b2,scope:b1,previousConnection:bY,container:bY.parent,deleteEndpointsOnDetach:bE,doNotFireConnectionEvent:bQ.endpointWillMoveAfterConnection});if(bY.endpoints[1]._makeTargetCreator&&bY.endpoints[1].connections.length<2){br.deleteEndpoint(bY.endpoints[1])}if(bE){bX.endpointsToDeleteOnDetach=[bQ,b2]}bX.repaint()}else{if(bY.suspendedEndpoint){if(bY.isReattach()){bY.setHover(false);bY.floatingAnchorIndex=null;bY.suspendedEndpoint.addConnection(bY);br.repaint(bQ.elementId)}else{bQ.detach(bY,false,true,true,bR)}}}};var bN=bH.dragEvents.drop;bL.scope=bL.scope||bI;bL[bN]=ap(bL[bN],bK);bH.initDroppable(bO,bL,true)};bC=aL(bC);var bG=bC.length&&bC.constructor!=String?bC:[bC];for(var bF=0;bF=0&&bX>=N[bJ]){if(bA){bA({element:bQ,maxConnections:bC},bZ)}return false}if(bE.filter){var bV=bE.filter(bH.getOriginalEvent(bZ),bQ);if(bV===false){return}}var b3=X({elId:bK});var b2=((bZ.pageX||bZ.page.x)-b3.left)/b3.width,b1=((bZ.pageY||bZ.page.y)-b3.top)/b3.height,b7=b2,b6=b1;if(bB.parent){var b0=bH.getElementObject(bB.parent),bY=H(b0);b3=X({elId:bY});b7=((bZ.pageX||bZ.page.x)-b3.left)/b3.width,b6=((bZ.pageY||bZ.page.y)-b3.top)/b3.height}var b5={};n.extend(b5,bB);b5.isSource=true;b5.anchor=[b2,b1,0,0];b5.parentAnchor=[b7,b6,0,0];b5.dragOptions=bS;if(bB.parent){var bW=b5.container||br.Defaults.Container||n.Defaults.Container;if(bW){b5.container=bW}else{b5.container=n.CurrentLibrary.getParent(bB.parent)}}bU=br.addEndpoint(bK,b5);bO=true;bU.endpointWillMoveAfterConnection=bB.parent!=null;bU.endpointWillMoveTo=bB.parent?bH.getElementObject(bB.parent):null;var b4=function(){if(bO){br.deleteEndpoint(bU)}};br.registerListener(bU.canvas,"mouseup",b4);br.registerListener(bQ,"mouseup",b4);bH.trigger(bU.canvas,"mousedown",bZ)};br.registerListener(bQ,"mousedown",bM);J[bK]=bM};bD=aL(bD);var bG=bD.length&&bD.constructor!=String?bD:[bD];for(var bF=0;bF0?bJ[0]:null,bE=bJ.length>0?0:-1,bI=this,bD=function(bM,bK,bQ,bP,bL){var bO=bP[0]+(bM.x*bL[0]),bN=bP[1]+(bM.y*bL[1]);return Math.sqrt(Math.pow(bK-bO,2)+Math.pow(bQ-bN,2))},bz=bA||function(bU,bL,bM,bN,bK){var bP=bM[0]+(bN[0]/2),bO=bM[1]+(bN[1]/2);var bR=-1,bT=Infinity;for(var bQ=0;bQ=bC.left)||(bF.left<=bC.right&&bF.right>=bC.right)||(bF.left<=bC.left&&bF.right>=bC.right)||(bC.left<=bF.left&&bC.right>=bF.right)),bK=((bF.top<=bC.top&&bF.bottom>=bC.top)||(bF.top<=bC.bottom&&bF.bottom>=bC.bottom)||(bF.top<=bC.top&&bF.bottom>=bC.bottom)||(bC.top<=bF.top&&bC.bottom>=bF.bottom));if(!(bE||bK)){var bH=null,bB=false,bz=false,bG=null;if(bC.left>bF.left&&bC.top>bF.top){bH=["right","top"]}else{if(bC.left>bF.left&&bF.top>bC.top){bH=["top","left"]}else{if(bC.leftbF.top){bH=["left","top"]}}}}return{orientation:U.DIAGONAL,a:bH,theta:bA,theta2:bD}}else{if(bE){return{orientation:U.HORIZONTAL,a:bF.topbz[0]?1:-1},aa=function(bz){return function(bB,bA){var bC=true;if(bz){if(bB[0][0]bA[0][1]}}else{if(bB[0][0]>bA[0][0]){bC=true}else{bC=bB[0][1]>bA[0][1]}}return bC===false?-1:1}},M=function(bA,bz){var bC=bA[0][0]<0?-Math.PI-bA[0][0]:Math.PI-bA[0][0],bB=bz[0][0]<0?-Math.PI-bz[0][0]:Math.PI-bz[0][0];if(bC>bB){return 1}else{return bA[0][1]>bz[0][1]?1:-1}},a2={top:bb,right:aa(true),bottom:aa(true),left:M},ar=function(bz,bA){return bz.sort(bA)},ao=function(bA,bz){var bC=ag[bA],bD=aj[bA],bB=function(bK,bR,bG,bJ,bP,bO,bF){if(bJ.length>0){var bN=ar(bJ,a2[bK]),bL=bK==="right"||bK==="top",bE=a5(bK,bR,bG,bN,bP,bO,bL);var bS=function(bV,bU){var bT=bs([bU[0],bU[1]],bV.canvas);ak[bV.id]=[bT[0],bT[1],bU[2],bU[3]];aM[bV.id]=bF};for(var bH=0;bH0){bS.connections[0].setHover(b7,false)}else{bS.setHover(b7)}};D(bS.endpoint,bS,b6);this.setPaintStyle(b5.paintStyle||b5.style||br.Defaults.EndpointStyle||n.Defaults.EndpointStyle,true);this.setHoverPaintStyle(b5.hoverPaintStyle||br.Defaults.EndpointHoverStyle||n.Defaults.EndpointHoverStyle,true);this.paintStyleInUse=this.getPaintStyle();var bN=this.getPaintStyle();this.connectorStyle=b5.connectorStyle;this.connectorHoverStyle=b5.connectorHoverStyle;this.connectorOverlays=b5.connectorOverlays;this.connector=b5.connector;this.connectorTooltip=b5.connectorTooltip;this.connectorClass=b5.connectorClass;this.connectorHoverClass=b5.connectorHoverClass;this.isSource=b5.isSource||false;this.isTarget=b5.isTarget||false;var bY=b5.maxConnections||br.Defaults.MaxConnections;this.getAttachedElements=function(){return bS.connections};this.canvas=this.endpoint.canvas;this.connections=b5.connections||[];this.scope=b5.scope||R;this.connectionType=b5.connectionType;this.timestamp=null;bS.reattachConnections=b5.reattach||br.Defaults.ReattachConnections;bS.connectionsDetachable=br.Defaults.ConnectionsDetachable;if(b5.connectionsDetachable===false||b5.detachable===false){bS.connectionsDetachable=false}var bM=b5.dragAllowedWhenFull||true;if(b5.onMaxConnections){bS.bind("maxConnections",b5.onMaxConnections)}this.computeAnchor=function(b7){return bS.anchor.compute(b7)};this.addConnection=function(b7){bS.connections.push(b7)};this.detach=function(b8,cd,b9,cg,b7){var cf=g(bS.connections,function(ci){return ci.id==b8.id}),ce=false;cg=(cg!==false);if(cf>=0){if(b9||b8._forceDetach||b8.isDetachable()||b8.isDetachAllowed(b8)){var ch=b8.endpoints[0]==bS?b8.endpoints[1]:b8.endpoints[0];if(b9||b8._forceDetach||(bS.isDetachAllowed(b8))){bS.connections.splice(cf,1);if(!cd){ch.detach(b8,true,b9);if(b8.endpointsToDeleteOnDetach){for(var cc=0;cc0){bS.detach(bS.connections[0],false,true,b8,b7)}};this.detachFrom=function(ca,b9,b7){var cb=[];for(var b8=0;b8=0){bS.connections.splice(b7,1)}};this.getElement=function(){return bR};this.setElement=function(ca,b7){var cc=H(ca);A(aV[bS.elementId],function(cd){return cd.id==bS.id});bR=C(ca);bJ=H(bR);bS.elementId=bJ;var cb=ay({source:cc,container:b7}),b9=bD.getParent(bS.canvas);bD.removeElement(bS.canvas,b9);bD.appendElement(bS.canvas,cb);for(var b8=0;b80){var cj=bO(ca.elementWithPrecedence),cl=cj.endpoints[0]==bS?1:0,cc=cl==0?cj.sourceId:cj.targetId,ci=aj[cc],ck=ag[cc];b9.txy=[ci.left,ci.top];b9.twh=ck;b9.tElement=cj.endpoints[cl]}cd=bS.anchor.compute(b9)}var ch=bP.compute(cd,bS.anchor.getOrientation(bS),bS.paintStyleInUse,cb||bS.paintStyleInUse);bP.paint(ch,bS.paintStyleInUse,bS.anchor);bS.timestamp=cg;for(var ce=0;ce0?u:n+u:u*n;return jsPlumbUtil.pointOnLine({x:i,y:h},{x:e,y:d},t)}}};this.gradientAtPoint=function(t){return f};this.pointAlongPathFrom=function(t,x,w){var v=s.pointOnPath(t,w),u=t==1?{x:i+((e-i)*10),y:h+((h-d)*10)}:{x:e,y:d};return jsPlumbUtil.pointOnLine(v,u,x)}};jsPlumb.Connectors.Bezier=function(w){var q=this;w=w||{};this.majorAnchor=w.curviness||150;this.minorAnchor=10;var u=null;this.type="Bezier";this._findControlPoint=function(I,x,D,y,B,G,z){var F=G.getOrientation(y),H=z.getOrientation(B),C=F[0]!=H[0]||F[1]==H[1],A=[],J=q.majorAnchor,E=q.minorAnchor;if(!C){if(F[0]==0){A.push(x[0]v){v=D}if(G<0){t+=G;var I=Math.abs(G);v+=I;r[0]+=I;g+=I;p+=I;m[0]+=I}var Q=Math.min(f,o),O=Math.min(r[1],m[1]),C=Math.min(Q,O),H=Math.max(f,o),F=Math.max(r[1],m[1]),z=Math.max(H,F);if(z>e){e=z}if(C<0){s+=C;var E=Math.abs(C);e+=E;r[1]+=E;f+=E;o+=E;m[1]+=E}if(M&&v0?0:1,x)}return x};this.pointOnPath=function(x,z){var y=d();x=n(y,x,z);return jsBezier.pointOnCurve(y,x)};this.gradientAtPoint=function(x,z){var y=d();x=n(y,x,z);return jsBezier.gradientAtPoint(y,x)};this.pointAlongPathFrom=function(x,A,z){var y=d();x=n(y,x,z);return jsBezier.pointAlongCurveFrom(y,x,A)}};jsPlumb.Connectors.Flowchart=function(z){this.type="Flowchart";z=z||{};var r=this,e=z.stub||z.minStubLength||30,i=jsPlumbUtil.isArray(e)?e[0]:e,o=jsPlumbUtil.isArray(e)?e[1]:e,t=z.gap||0,u=[],m=0,g=[],q=[],v=[],s,p,y=-Infinity,w=-Infinity,A=Infinity,x=Infinity,d=z.grid,f=function(G,C){var F=G%C,D=Math.floor(G/C),E=F>(C/2)?1:0;return(D+E)*C},n=function(C,F,E,D){return[E||d==null?C:f(C,d[0]),D||d==null?F:f(F,d[1])]},B=function(D,C,H,G){var F=0;for(var E=0;E0?E/m:(m+E)/m}var C=g.length-1,D=1;for(var F=0;F=E){C=F;D=(E-g[F][0])/q[F];break}}return{segment:u[C],proportion:D,index:C}};this.compute=function(Z,an,C,T,ay,N,X,S,at,ap){u=[];g=[];m=0;q=[];y=w=-Infinity;A=x=Infinity;r.lineWidth=X;s=an[0]ax?0:1,ah=[1,0][af];Q=[];az=[];Q[af]=Z[af]>an[af]?-1:1;az[af]=Z[af]>an[af]?1:-1;Q[ah]=0;az[ah]=0}var L=s?(ao-E)+(t*Q[0]):H+(t*Q[0]),K=p?(ax-D)+(t*Q[1]):G+(t*Q[1]),av=s?H+(t*az[0]):(ao-E)+(t*az[0]),au=p?G+(t*az[1]):(ax-D)+(t*az[1]),ac=L+(Q[0]*i),ab=K+(Q[1]*i),O=av+(az[0]*o),M=au+(az[1]*o),Y=Math.abs(L-av)>(i+o),aa=Math.abs(K-au)>(i+o),ak=ac+((O-ac)/2),ai=ab+((M-ab)/2),R=((Q[0]*az[0])+(Q[1]*az[1])),ae=R==-1,ag=R==0,F=R==1;am-=H;al-=G;v=[am,al,ao,ax,L,K,av,au];var ar=[];var V=Q[0]==0?"y":"x",P=ae?"opposite":F?"orthogonal":"perpendicular",I=jsPlumbUtil.segment([L,K],[av,au]),aj=Q[V=="x"?0:1]==-1,U={x:[null,4,3,2,1],y:[null,2,1,4,3]};if(aj){I=U[V][I]}k(ac,ab,L,K,av,au);var W=function(aD,aC,aA,aB){return aD+(aC*((1-aA)*aB)+Math.max(i,o))},J={oppositex:function(){if(C.elementId==T.elementId){var aA=ab+((1-ay.y)*at.height)+Math.max(i,o);return[[ac,aA],[O,aA]]}else{if(Y&&(I==1||I==2)){return[[ak,K],[ak,au]]}else{return[[ac,ai],[O,ai]]}}},orthogonalx:function(){if(I==1||I==2){return[[O,ab]]}else{return[[ac,M]]}},perpendicularx:function(){var aA=(au+K)/2;if((I==1&&az[1]==1)||(I==2&&az[1]==-1)){if(Math.abs(av-L)>Math.max(i,o)){return[[O,ab]]}else{return[[ac,ab],[ac,aA],[O,aA]]}}else{if((I==3&&az[1]==-1)||(I==4&&az[1]==1)){return[[ac,aA],[O,aA]]}else{if((I==3&&az[1]==1)||(I==4&&az[1]==-1)){return[[ac,M]]}else{if((I==1&&az[1]==-1)||(I==2&&az[1]==1)){if(Math.abs(av-L)>Math.max(i,o)){return[[ak,ab],[ak,M]]}else{return[[ac,M]]}}}}}},oppositey:function(){if(C.elementId==T.elementId){var aA=ac+((1-ay.x)*at.width)+Math.max(i,o);return[[aA,ab],[aA,M]]}else{if(aa&&(I==2||I==3)){return[[L,ai],[av,ai]]}else{return[[ak,ab],[ak,M]]}}},orthogonaly:function(){if(I==2||I==3){return[[ac,M]]}else{return[[O,ab]]}},perpendiculary:function(){var aA=(av+L)/2;if((I==2&&az[0]==-1)||(I==3&&az[0]==1)){if(Math.abs(av-L)>Math.max(i,o)){return[[ac,M]]}else{return[[ac,ai],[O,ai]]}}else{if((I==1&&az[0]==-1)||(I==4&&az[0]==1)){var aA=(av+L)/2;return[[aA,ab],[aA,M]]}else{if((I==1&&az[0]==1)||(I==4&&az[0]==-1)){return[[O,ab]]}else{if((I==2&&az[0]==1)||(I==3&&az[0]==-1)){if(Math.abs(au-K)>Math.max(i,o)){return[[ac,ai],[O,ai]]}else{return[[O,ab]]}}}}}}};var aq=J[P+V]();if(aq){for(var aw=0;awv[3]){v[3]=w+(X*2)}if(y>v[2]){v[2]=y+(X*2)}return v};this.pointOnPath=function(C,D){return r.pointAlongPathFrom(C,0,D)};this.gradientAtPoint=function(C,D){return u[h(C,D)["index"]][4]};this.pointAlongPathFrom=function(J,C,I){var K=h(J,I),G=K.segment,D=K.proportion,F=u[K.index][5],E=u[K.index][4];var H={x:E==Infinity?G[2]:G[2]>G[0]?G[0]+((1-D)*F)-C:G[2]+(D*F)+C,y:E==0?G[3]:G[3]>G[1]?G[1]+((1-D)*F)-C:G[3]+(D*F)+C,segmentInfo:K};return H}};jsPlumb.Endpoints.Dot=function(e){this.type="Dot";var d=this;e=e||{};this.radius=e.radius||10;this.defaultOffset=0.5*this.radius;this.defaultInnerRadius=this.radius/3;this.compute=function(k,g,m,i){var h=m.radius||d.radius,f=k[0]-h,l=k[1]-h;return[f,l,h*2,h*2,h]}};jsPlumb.Endpoints.Rectangle=function(e){this.type="Rectangle";var d=this;e=e||{};this.width=e.width||20;this.height=e.height||20;this.compute=function(l,h,n,k){var i=n.width||d.width,g=n.height||d.height,f=l[0]-(i/2),m=l[1]-(g/2);return[f,m,i,g]}};var b=function(f){jsPlumb.DOMElementComponent.apply(this,arguments);var d=this;var e=[];this.getDisplayElements=function(){return e};this.appendDisplayElement=function(g){e.push(g)}};jsPlumb.Endpoints.Image=function(i){this.type="Image";b.apply(this,arguments);var n=this,h=false,g=false,f=i.width,e=i.height,l=null,d=i.endpoint;this.img=new Image();n.ready=false;this.img.onload=function(){n.ready=true;f=f||n.img.width;e=e||n.img.height;if(l){l(n)}};d.setImage=function(o,q){var p=o.constructor==String?o:o.src;l=q;n.img.src=o;if(n.canvas!=null){n.canvas.setAttribute("src",o)}};d.setImage(i.src||i.url,i.onload);this.compute=function(q,o,r,p){n.anchorPoint=q;if(n.ready){return[q[0]-f/2,q[1]-e/2,f,e]}else{return[0,0,0,0]}};n.canvas=document.createElement("img"),h=false;n.canvas.style.margin=0;n.canvas.style.padding=0;n.canvas.style.outline=0;n.canvas.style.position="absolute";var k=i.cssClass?" "+i.cssClass:"";n.canvas.className=jsPlumb.endpointClass+k;if(f){n.canvas.setAttribute("width",f)}if(e){n.canvas.setAttribute("height",e)}jsPlumb.appendElement(n.canvas,i.parent);n.attachListeners(n.canvas,n);n.cleanup=function(){g=true};var m=function(r,q,p){if(!g){if(!h){n.canvas.setAttribute("src",n.img.src);n.appendDisplayElement(n.canvas);h=true}var o=n.anchorPoint[0]-(f/2),s=n.anchorPoint[1]-(e/2);jsPlumb.sizeCanvas(n.canvas,o,s,f,e)}};this.paint=function(q,p,o){if(n.ready){m(q,p,o)}else{window.setTimeout(function(){n.paint(q,p,o)},200)}}};jsPlumb.Endpoints.Blank=function(e){var d=this;this.type="Blank";b.apply(this,arguments);this.compute=function(h,f,i,g){return[h[0],h[1],10,0]};d.canvas=document.createElement("div");d.canvas.style.display="block";d.canvas.style.width="1px";d.canvas.style.height="1px";d.canvas.style.background="transparent";d.canvas.style.position="absolute";d.canvas.className=d._jsPlumb.endpointClass;jsPlumb.appendElement(d.canvas,e.parent);this.paint=function(h,g,f){jsPlumb.sizeCanvas(d.canvas,h[0],h[1],h[2],h[3])}};jsPlumb.Endpoints.Triangle=function(d){this.type="Triangle";d=d||{};d.width=d.width||55;d.height=d.height||55;this.width=d.width;this.height=d.height;this.compute=function(k,g,m,i){var h=m.width||self.width,f=m.height||self.height,e=k[0]-(h/2),l=k[1]-(f/2);return[e,l,h,f]}};var c=function(f){var e=true,d=this;this.isAppendedAtTopLevel=true;this.component=f.component;this.loc=f.location==null?0.5:f.location;this.endpointLoc=f.endpointLocation==null?[0.5,0.5]:f.endpointLocation;this.setVisible=function(g){e=g;d.component.repaint()};this.isVisible=function(){return e};this.hide=function(){d.setVisible(false)};this.show=function(){d.setVisible(true)};this.incrementLocation=function(g){d.loc+=g;d.component.repaint()};this.setLocation=function(g){d.loc=g;d.component.repaint()};this.getLocation=function(){return d.loc}};jsPlumb.Overlays.Arrow=function(h){this.type="Arrow";c.apply(this,arguments);this.isAppendedAtTopLevel=false;h=h||{};var e=this;this.length=h.length||20;this.width=h.width||20;this.id=h.id;var g=(h.direction||1)<0?-1:1,f=h.paintStyle||{lineWidth:1},d=h.foldback||0.623;this.computeMaxSize=function(){return e.width*1.5};this.cleanup=function(){};this.draw=function(m,A,v){var p,w,i,q,o;if(m.pointAlongPathFrom){if(jsPlumbUtil.isString(e.loc)||e.loc>1||e.loc<0){var k=parseInt(e.loc);p=m.pointAlongPathFrom(k,g*e.length/2,true),w=m.pointOnPath(k,true),i=jsPlumbUtil.pointOnLine(p,w,e.length)}else{if(e.loc==1){p=m.pointOnPath(e.loc);w=m.pointAlongPathFrom(e.loc,-1);i=jsPlumbUtil.pointOnLine(p,w,e.length)}else{if(e.loc==0){i=m.pointOnPath(e.loc);w=m.pointAlongPathFrom(e.loc,1);p=jsPlumbUtil.pointOnLine(i,w,e.length)}else{p=m.pointAlongPathFrom(e.loc,g*e.length/2),w=m.pointOnPath(e.loc),i=jsPlumbUtil.pointOnLine(p,w,e.length)}}}q=jsPlumbUtil.perpendicularLineTo(p,i,e.width);o=jsPlumbUtil.pointOnLine(p,i,d*e.length);var z=Math.min(p.x,q[0].x,q[1].x),t=Math.max(p.x,q[0].x,q[1].x),y=Math.min(p.y,q[0].y,q[1].y),s=Math.max(p.y,q[0].y,q[1].y);var r={hxy:p,tail:q,cxy:o},u=f.strokeStyle||A.strokeStyle,x=f.fillStyle||A.strokeStyle,n=f.lineWidth||A.lineWidth;e.paint(m,r,n,u,x,v);return[z,t,y,s]}else{return[0,0,0,0]}}};jsPlumb.Overlays.PlainArrow=function(e){e=e||{};var d=jsPlumb.extend(e,{foldback:1});jsPlumb.Overlays.Arrow.call(this,d);this.type="PlainArrow"};jsPlumb.Overlays.Diamond=function(f){f=f||{};var d=f.length||40,e=jsPlumb.extend(f,{length:d/2,foldback:2});jsPlumb.Overlays.Arrow.call(this,e);this.type="Diamond"};var a=function(i){jsPlumb.DOMElementComponent.apply(this,arguments);c.apply(this,arguments);var d=this,e=false;i=i||{};this.id=i.id;var l;var h=function(){l=i.create(i.component);l=jsPlumb.CurrentLibrary.getDOMElement(l);l.style.position="absolute";var m=i._jsPlumb.overlayClass+" "+(d.cssClass?d.cssClass:i.cssClass?i.cssClass:"");l.className=m;jsPlumb.appendElement(l,i.component.parent);i._jsPlumb.getId(l);d.attachListeners(l,d);d.canvas=l};this.getElement=function(){if(l==null){h()}return l};this.getDimensions=function(){return jsPlumb.CurrentLibrary.getSize(jsPlumb.CurrentLibrary.getElementObject(d.getElement()))};var f=null,k=function(m){if(f==null){f=d.getDimensions()}return f};this.clearCachedDimensions=function(){f=null};this.computeMaxSize=function(){var m=k();return Math.max(m[0],m[1])};var g=d.setVisible;d.setVisible=function(m){g(m);l.style.display=m?"block":"none"};this.cleanup=function(){if(l!=null){jsPlumb.CurrentLibrary.removeElement(l)}};this.paint=function(m,o,n){if(!e){d.getElement();m.appendDisplayElement(l);d.attachListeners(l,m);e=true}l.style.left=(n[0]+o.minx)+"px";l.style.top=(n[1]+o.miny)+"px"};this.draw=function(n,o,p){var t=k();if(t!=null&&t.length==2){var q={x:0,y:0};if(n.pointOnPath){var r=d.loc,s=false;if(jsPlumbUtil.isString(d.loc)||d.loc<0||d.loc>1){r=parseInt(d.loc);s=true}q=n.pointOnPath(r,s)}else{var m=d.loc.constructor==Array?d.loc:d.endpointLoc;q={x:m[0]*p[2],y:m[1]*p[3]}}minx=q.x-(t[0]/2),miny=q.y-(t[1]/2);d.paint(n,{minx:minx,miny:miny,td:t,cxy:q},p);return[minx,minx+t[0],miny,miny+t[1]]}else{return[0,0,0,0]}};this.reattachListeners=function(m){if(l){d.reattachListenersForElement(l,d,m)}}};jsPlumb.Overlays.Custom=function(d){this.type="Custom";a.apply(this,arguments)};jsPlumb.Overlays.Label=function(h){var d=this;this.labelStyle=h.labelStyle||jsPlumb.Defaults.LabelStyle;this.cssClass=this.labelStyle!=null?this.labelStyle.cssClass:null;h.create=function(){return document.createElement("div")};jsPlumb.Overlays.Custom.apply(this,arguments);this.type="Label";var f=h.label||"",d=this,g=null;this.setLabel=function(k){f=k;g=null;d.clearCachedDimensions();e();d.component.repaint()};var e=function(){if(typeof f=="function"){var k=f(d);d.getElement().innerHTML=k.replace(/\r\n/g,"
      ")}else{if(g==null){g=f;d.getElement().innerHTML=g.replace(/\r\n/g,"
      ")}}};this.getLabel=function(){return f};var i=this.getDimensions;this.getDimensions=function(){e();return i()}}})();(function(){var c=function(e,g,d,f){this.m=(f-g)/(d-e);this.b=-1*((this.m*e)-g);this.rectIntersect=function(q,p,s,o){var n=[];var k=(p-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*(q+s))+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}var k=((p+o)-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*q)+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}if(n.length==2){var m=(n[0][0]+n[1][0])/2,l=(n[0][1]+n[1][1])/2;n.push([m,l]);var i=m<=q+(s/2)?-1:1,r=l<=p+(o/2)?-1:1;n.push([i,r]);return n}return null}},a=function(e,g,d,f){if(e<=d&&f<=g){return 1}else{if(e<=d&&g<=f){return 2}else{if(d<=e&&f>=g){return 3}}}return 4},b=function(g,f,i,e,h,m,l,d,k){if(d<=k){return[g,f]}if(i==1){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==2){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}else{if(i==3){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==4){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}}}}};jsPlumb.Connectors.StateMachine=function(l){var u=this,n=null,o,m,g,e,p=[],d=l.curviness||10,k=l.margin||5,q=l.proximityLimit||80,f=l.orientation&&l.orientation=="clockwise",i=l.loopbackRadius||25,h=false,t=l.showLoopback!==false;this.type="StateMachine";l=l||{};this.compute=function(ad,H,W,I,ac,z,v,U){var Q=Math.abs(ad[0]-H[0]),Y=Math.abs(ad[1]-H[1]),S=0.45*Q,ab=0.45*Y;Q*=1.9;Y*=1.9;v=v||1;var O=Math.min(ad[0],H[0])-S,M=Math.min(ad[1],H[1])-ab;if(!t||(W.elementId!=I.elementId)){h=false;o=ad[0]0?0:1,v)}return v};this.pointOnPath=function(x,B){if(h){if(B){var y=Math.PI*2*i;x=x/y}if(x>0&&x<1){x=1-x}var z=(x*2*Math.PI)+(Math.PI/2),w=n[4]+(n[6]*Math.cos(z)),v=n[5]+(n[6]*Math.sin(z));return{x:w,y:v}}else{var A=r();x=s(A,x,B);return jsBezier.pointOnCurve(A,x)}};this.gradientAtPoint=function(v,y){if(h){if(y){var w=Math.PI*2*i;v=v/w}return Math.atan(v*2*Math.PI)}else{var x=r();v=s(x,v,y);return jsBezier.gradientAtPoint(x,v)}};this.pointAlongPathFrom=function(D,v,C){if(h){if(C){var B=Math.PI*2*i;D=D/B}if(D>0&&D<1){D=1-D}var B=2*Math.PI*n[6],w=v/B*2*Math.PI,z=(D*2*Math.PI)-w+(Math.PI/2),y=n[4]+(n[6]*Math.cos(z)),x=n[5]+(n[6]*Math.sin(z));return{x:y,y:x}}else{var A=r();D=s(A,D,C);return jsBezier.pointAlongCurveFrom(A,D,v)}}};jsPlumb.Connectors.canvas.StateMachine=function(f){f=f||{};var d=this,g=f.drawGuideline||true,e=f.avoidSelector;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.CanvasConnector.apply(this,arguments);this._paint=function(l){if(l.length==10){d.ctx.beginPath();d.ctx.moveTo(l[4],l[5]);d.ctx.bezierCurveTo(l[8],l[9],l[8],l[9],l[6],l[7]);d.ctx.stroke()}else{d.ctx.save();d.ctx.beginPath();var k=0,i=2*Math.PI,h=l[7];d.ctx.arc(l[4],l[5],l[6],0,i,h);d.ctx.stroke();d.ctx.closePath();d.ctx.restore()}};this.createGradient=function(i,h){return h.createLinearGradient(i[4],i[5],i[6],i[7])}};jsPlumb.Connectors.svg.StateMachine=function(){var d=this;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.SvgConnector.apply(this,arguments);this.getPath=function(e){if(e.length==10){return"M "+e[4]+" "+e[5]+" C "+e[8]+" "+e[9]+" "+e[8]+" "+e[9]+" "+e[6]+" "+e[7]}else{return"M"+(e[8]+4)+" "+e[9]+" A "+e[6]+" "+e[6]+" 0 1,0 "+(e[8]-4)+" "+e[9]}}};jsPlumb.Connectors.vml.StateMachine=function(){jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.VmlConnector.apply(this,arguments);var d=jsPlumb.vml.convertValue;this.getPath=function(k){if(k.length==10){return"m"+d(k[4])+","+d(k[5])+" c"+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+","+d(k[6])+","+d(k[7])+" e"}else{var h=d(k[8]-k[6]),g=d(k[9]-(2*k[6])),f=h+d(2*k[6]),e=g+d(2*k[6]),l=h+","+g+","+f+","+e;var i="ar "+l+","+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+" e";return i}}}})();(function(){var h={"stroke-linejoin":"joinstyle",joinstyle:"joinstyle",endcap:"endcap",miterlimit:"miterlimit"},c=null;if(document.createStyleSheet&&document.namespaces){var m=[".jsplumb_vml","jsplumb\\:textbox","jsplumb\\:oval","jsplumb\\:rect","jsplumb\\:stroke","jsplumb\\:shape","jsplumb\\:group"],g="behavior:url(#default#VML);position:absolute;";c=document.createStyleSheet();for(var r=0;rF?1:-1:0,K=N?Q>P?1:-1:0,O=D.lineWidth/2;G=G+" L "+H+" "+Q;G=G+" L "+(H+(L*O))+" "+(Q+(K*O));J=H;I=Q;G=G+" M "+H+" "+Q}G=G+" L "+E[6]+","+E[7];return G}};var y=window.SvgEndpoint=function(E){var D=this;s.apply(this,[{cssClass:E._jsPlumb.endpointClass,originalArgs:arguments,pointerEventsSpec:"all",useDivWrapper:true,_jsPlumb:E._jsPlumb}]);this._paint=function(H,G){var F=jsPlumb.extend({},G);if(F.outlineColor){F.strokeWidth=F.outlineWidth;F.strokeStyle=jsPlumbUtil.convertStyle(F.outlineColor,true)}if(D.node==null){D.node=D.makeNode(H,F);D.svg.appendChild(D.node);D.attachListeners(D.node,D)}x(D.svg,D.node,F,H,D);n(D.node,H)};this.reattachListeners=function(){if(D.node){D.reattachListenersForElement(D.node,D)}}};jsPlumb.Endpoints.svg.Dot=function(){jsPlumb.Endpoints.Dot.apply(this,arguments);y.apply(this,arguments);this.makeNode=function(E,D){return f("circle",{cx:E[2]/2,cy:E[3]/2,r:E[2]/2})}};jsPlumb.Endpoints.svg.Rectangle=function(){jsPlumb.Endpoints.Rectangle.apply(this,arguments);y.apply(this,arguments);this.makeNode=function(E,D){return f("rect",{width:E[2],height:E[3]})}};jsPlumb.Endpoints.svg.Image=jsPlumb.Endpoints.Image;jsPlumb.Endpoints.svg.Blank=jsPlumb.Endpoints.Blank;jsPlumb.Overlays.svg.Label=jsPlumb.Overlays.Label;jsPlumb.Overlays.svg.Custom=jsPlumb.Overlays.Custom;var p=function(H,F){H.apply(this,F);jsPlumb.jsPlumbUIComponent.apply(this,F);this.isAppendedAtTopLevel=false;var D=this,G=null;this.paint=function(J,M,I,N,K){if(G==null){G=f("path",{"pointer-events":"all"});J.svg.appendChild(G);D.attachListeners(G,J);D.attachListeners(G,D)}var L=F&&(F.length==1)?(F[0].cssClass||""):"";g(G,{d:E(M),"class":L,stroke:N?N:null,fill:K?K:null})};var E=function(I){return"M"+I.hxy.x+","+I.hxy.y+" L"+I.tail[0].x+","+I.tail[0].y+" L"+I.cxy.x+","+I.cxy.y+" L"+I.tail[1].x+","+I.tail[1].y+" L"+I.hxy.x+","+I.hxy.y};this.reattachListeners=function(){if(G){D.reattachListenersForElement(G,D)}};this.cleanup=function(){if(G!=null){jsPlumb.CurrentLibrary.removeElement(G)}}};jsPlumb.Overlays.svg.Arrow=function(){p.apply(this,[jsPlumb.Overlays.Arrow,arguments])};jsPlumb.Overlays.svg.PlainArrow=function(){p.apply(this,[jsPlumb.Overlays.PlainArrow,arguments])};jsPlumb.Overlays.svg.Diamond=function(){p.apply(this,[jsPlumb.Overlays.Diamond,arguments])};jsPlumb.Overlays.svg.GuideLines=function(){var I=null,D=this,H=null,G,F;jsPlumb.Overlays.GuideLines.apply(this,arguments);this.paint=function(K,M,J,N,L){if(I==null){I=f("path");K.svg.appendChild(I);D.attachListeners(I,K);D.attachListeners(I,D);G=f("path");K.svg.appendChild(G);D.attachListeners(G,K);D.attachListeners(G,D);F=f("path");K.svg.appendChild(F);D.attachListeners(F,K);D.attachListeners(F,D)}g(I,{d:E(M[0],M[1]),stroke:"red",fill:null});g(G,{d:E(M[2][0],M[2][1]),stroke:"blue",fill:null});g(F,{d:E(M[3][0],M[3][1]),stroke:"green",fill:null})};var E=function(K,J){return"M "+K.x+","+K.y+" L"+J.x+","+J.y}}})();(function(){var d=null,i=function(p,o){return jsPlumb.CurrentLibrary.hasClass(a(p),o)},a=function(o){return jsPlumb.CurrentLibrary.getElementObject(o)},m=function(o){return jsPlumb.CurrentLibrary.getOffset(a(o))},n=function(o){return jsPlumb.CurrentLibrary.getPageXY(o)},f=function(o){return jsPlumb.CurrentLibrary.getClientXY(o)};var k=function(){var q=this;q.overlayPlacements=[];jsPlumb.jsPlumbUIComponent.apply(this,arguments);jsPlumbUtil.EventGenerator.apply(this,arguments);this._over=function(z){var B=m(a(q.canvas)),D=n(z),u=D[0]-B.left,C=D[1]-B.top;if(u>0&&C>0&&u=u&&w[2]<=C&&w[3]>=C)){return true}}var A=q.canvas.getContext("2d").getImageData(parseInt(u),parseInt(C),1,1);return A.data[0]!=0||A.data[1]!=0||A.data[2]!=0||A.data[3]!=0}return false};var p=false,o=false,t=null,s=false,r=function(v,u){return v!=null&&i(v,u)};this.mousemove=function(x){var z=n(x),w=f(x),v=document.elementFromPoint(w[0],w[1]),y=r(v,"_jsPlumb_overlay");var u=d==null&&(r(v,"_jsPlumb_endpoint")||r(v,"_jsPlumb_connector"));if(!p&&u&&q._over(x)){p=true;q.fire("mouseenter",q,x);return true}else{if(p&&(!q._over(x)||!u)&&!y){p=false;q.fire("mouseexit",q,x)}}q.fire("mousemove",q,x)};this.click=function(u){if(p&&q._over(u)&&!s){q.fire("click",q,u)}s=false};this.dblclick=function(u){if(p&&q._over(u)&&!s){q.fire("dblclick",q,u)}s=false};this.mousedown=function(u){if(q._over(u)&&!o){o=true;t=m(a(q.canvas));q.fire("mousedown",q,u)}};this.mouseup=function(u){o=false;q.fire("mouseup",q,u)};this.contextmenu=function(u){if(p&&q._over(u)&&!s){q.fire("contextmenu",q,u)}s=false}};var c=function(p){var o=document.createElement("canvas");p._jsPlumb.appendElement(o,p.parent);o.style.position="absolute";if(p["class"]){o.className=p["class"]}p._jsPlumb.getId(o,p.uuid);if(p.tooltip){o.setAttribute("title",p.tooltip)}return o};var l=function(p){k.apply(this,arguments);var o=[];this.getDisplayElements=function(){return o};this.appendDisplayElement=function(q){o.push(q)}};var h=jsPlumb.CanvasConnector=function(r){l.apply(this,arguments);var o=function(v,t){p.ctx.save();jsPlumb.extend(p.ctx,t);if(t.gradient){var u=p.createGradient(v,p.ctx);for(var s=0;s0?c[0].tagName:null},getUIPosition:function(c,d){d=d||1;if(c.length==1){ret={left:c[0].pageX,top:c[0].pageY}}else{var e=c[1],b=e.offset;ret=b||e.absolutePosition;e.position.left/=d;e.position.top/=d}return{left:ret.left/d,top:ret.top/d}},hasClass:function(c,b){return c.hasClass(b)},initDraggable:function(c,b,d){b=b||{};b.helper=null;if(d){b.scope=b.scope||jsPlumb.Defaults.Scope}c.draggable(b)},initDroppable:function(c,b){b.scope=b.scope||jsPlumb.Defaults.Scope;c.droppable(b)},isAlreadyDraggable:function(b){b=jsPlumb.CurrentLibrary.getElementObject(b);return b.hasClass("ui-draggable")},isDragSupported:function(c,b){return c.draggable},isDropSupported:function(c,b){return c.droppable},removeClass:function(c,b){c=jsPlumb.CurrentLibrary.getElementObject(c);try{if(c[0].className.constructor==SVGAnimatedString){jsPlumbUtil.svg.removeClass(c[0],b)}}catch(d){}c.removeClass(b)},removeElement:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).remove()},setAttribute:function(c,d,b){c.attr(d,b)},setDraggable:function(c,b){c.draggable("option","disabled",!b)},setDragScope:function(c,b){c.draggable("option","scope",b)},setOffset:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).offset(c)},trigger:function(d,e,b){var c=jQuery._data(jsPlumb.CurrentLibrary.getElementObject(d)[0],"handle");c(b)},unbind:function(b,c,d){b=jsPlumb.CurrentLibrary.getElementObject(b);b.unbind(c,d)}};a(document).ready(jsPlumb.init)})(jQuery);(function(){"undefined"==typeof Math.sgn&&(Math.sgn=function(l){return 0==l?0:0=64){x[0]=(C[0].x+C[B].x)/2;return 1}var p,u=C[0].y-C[B].y;y=C[B].x-C[0].x;q=C[0].x*C[B].y-C[B].x*C[0].y;s=max_distance_below=0;for(p=1;ps?s=r:r0?1:-1,r=null;n1){l.location=1}if(l.location<0){l.location=0}return i(m,l.location)},nearestPointOnCurve:function(m,l){var n=h(m,l);return{point:k(l,l.length-1,n.location,null,null),location:n.location}},pointOnCurve:c,pointAlongCurveFrom:function(m,l,n){return b(m,l,n).point},perpendicularToCurveAt:function(m,l,n,o){l=b(m,l,o==null?0:o);m=i(m,l.location);o=Math.atan(-1/m);m=n/2*Math.sin(o);n=n/2*Math.cos(o);return[{x:l.point.x+n,y:l.point.y+m},{x:l.point.x-n,y:l.point.y-m}]},locationAlongCurveFrom:function(m,l,n){return b(m,l,n).location}}})(); \ No newline at end of file diff --git a/v3/js/jquery.qtip.min.js b/v3/js/jquery.qtip.min.js new file mode 100644 index 000000000..3971f6df5 --- /dev/null +++ b/v3/js/jquery.qtip.min.js @@ -0,0 +1,2 @@ +/*! qTip2 v2.0.0 | http://craigsworks.com/projects/qtip2/ | Licensed MIT, GPL */ +(function(a,b,c){(function(a){"use strict",typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)})(function(d){function I(a){var b=function(a){return a===g||"object"!=typeof a},c=function(a){return!d.isFunction(a)&&(!a&&!a.attr||a.length<1||"object"==typeof a&&!a.jquery)};if(!a||"object"!=typeof a)return f;b(a.metadata)&&(a.metadata={type:a.metadata});if("content"in a){if(b(a.content)||a.content.jquery)a.content={text:a.content};c(a.content.text||f)&&(a.content.text=f),"title"in a.content&&(b(a.content.title)&&(a.content.title={text:a.content.title}),c(a.content.title.text||f)&&(a.content.title.text=f))}return"position"in a&&b(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&b(a.show)&&(a.show=a.show.jquery?{target:a.show}:{event:a.show}),"hide"in a&&b(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&b(a.style)&&(a.style={classes:a.style}),d.each(u,function(){this.sanitize&&this.sanitize(a)}),a}function J(h,i,q,r){function Q(a){var b=0,c,d=i,e=a.split(".");while(d=d[e[b++]])b",{"class":"ui-state-default ui-tooltip-close "+(i.style.widget?"":x+"-icon"),title:c,"aria-label":c}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),O.button.appendTo(O.titlebar).attr("role","button").click(function(a){return M.hasClass(z)||s.hide(a),f}),s.redraw()}function V(){var a=J+"-title";O.titlebar&&T(),O.titlebar=d("
      ",{"class":x+"-titlebar "+(i.style.widget?"ui-widget-header":"")}).append(O.title=d("
      ",{id:a,"class":x+"-title","aria-atomic":e})).insertBefore(O.content).delegate(".ui-tooltip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus",a.type.substr(-4)==="down")}).delegate(".ui-tooltip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover",a.type==="mouseover")}),i.content.title.button?U():s.rendered&&s.redraw()}function W(a){var b=O.button,c=O.title;if(!s.rendered)return f;a?(c||V(),U()):b.remove()}function X(a,b){var c=O.title;if(!s.rendered||!a)return f;d.isFunction(a)&&(a=a.call(h,P.event,s));if(a===f||!a&&a!=="")return T(f);a.jquery&&a.length>0?c.empty().append(a.css({display:"block"})):c.html(a),s.redraw(),b!==f&&s.rendered&&M[0].offsetWidth>0&&s.reposition(P.event)}function Y(a,b){function g(a){function i(c){c&&(delete h[c.src],clearTimeout(s.timers.img[c.src]),d(c).unbind(N)),d.isEmptyObject(h)&&(s.redraw(),b!==f&&s.reposition(P.event),a())}var g,h={};if((g=e.find("img[src]:not([height]):not([width])")).length===0)return i();g.each(function(a,b){if(h[b.src]!==c)return;var e=0,f=3;(function g(){if(b.height||b.width||e>f)return i(b);e+=1,s.timers.img[b.src]=setTimeout(g,700)})(),d(b).bind("error"+N+" load"+N,function(){i(this)}),h[b.src]=b})}var e=O.content;return!s.rendered||!a?f:(d.isFunction(a)&&(a=a.call(h,P.event,s)||""),a.jquery&&a.length>0?e.empty().append(a.css({display:"block"})):e.html(a),s.rendered<0?M.queue("fx",g):(L=0,g(d.noop)),s)}function Z(){function l(a){if(M.hasClass(z))return f;clearTimeout(s.timers.show),clearTimeout(s.timers.hide);var b=function(){s.toggle(e,a)};i.show.delay>0?s.timers.show=setTimeout(b,i.show.delay):b()}function m(a){if(M.hasClass(z)||K||L)return f;var b=d(a.relatedTarget||a.target),e=b.closest(A)[0]===M[0],h=b[0]===g.show[0];clearTimeout(s.timers.show),clearTimeout(s.timers.hide);if(c.target==="mouse"&&e||i.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(e||h)){try{a.preventDefault(),a.stopImmediatePropagation()}catch(j){}return}i.hide.delay>0?s.timers.hide=setTimeout(function(){s.hide(a)},i.hide.delay):s.hide(a)}function n(a){if(M.hasClass(z))return f;clearTimeout(s.timers.inactive),s.timers.inactive=setTimeout(function(){s.hide(a)},i.hide.inactive)}function o(a){s.rendered&&M[0].offsetWidth>0&&s.reposition(a)}var c=i.position,g={show:i.show.target,hide:i.hide.target,viewport:d(c.viewport),document:d(b),body:d(b.body),window:d(a)},j={show:d.trim(""+i.show.event).split(" "),hide:d.trim(""+i.hide.event).split(" ")},k=d.browser.msie&&parseInt(d.browser.version,10)===6;M.bind("mouseenter"+N+" mouseleave"+N,function(a){var b=a.type==="mouseenter";b&&s.focus(a),M.toggleClass(D,b)}),/mouse(out|leave)/i.test(i.hide.event)&&i.hide.leave==="window"&&g.window.bind("mouseout"+N+" blur"+N,function(a){!/select|option/.test(a.target.nodeName)&&!a.relatedTarget&&s.hide(a)}),i.hide.fixed?(g.hide=g.hide.add(M),M.bind("mouseover"+N,function(){M.hasClass(z)||clearTimeout(s.timers.hide)})):/mouse(over|enter)/i.test(i.show.event)&&g.hide.bind("mouseleave"+N,function(a){clearTimeout(s.timers.show)}),(""+i.hide.event).indexOf("unfocus")>-1&&c.container.closest("html").bind("mousedown"+N,function(a){var b=d(a.target),c=s.rendered&&!M.hasClass(z)&&M[0].offsetWidth>0,e=b.parents(A).filter(M[0]).length>0;b[0]!==h[0]&&b[0]!==M[0]&&!e&&!h.has(b[0]).length&&!b.attr("disabled")&&s.hide(a)}),"number"==typeof i.hide.inactive&&(g.show.bind("qtip-"+q+"-inactive",n),d.each(t.inactiveEvents,function(a,b){g.hide.add(O.tooltip).bind(b+N+"-inactive",n)})),d.each(j.hide,function(a,b){var c=d.inArray(b,j.show),e=d(g.hide);c>-1&&e.add(g.show).length===e.length||b==="unfocus"?(g.show.bind(b+N,function(a){M[0].offsetWidth>0?m(a):l(a)}),delete j.show[c]):g.hide.bind(b+N,m)}),d.each(j.show,function(a,b){g.show.bind(b+N,l)}),"number"==typeof i.hide.distance&&g.show.add(M).bind("mousemove"+N,function(a){var b=P.origin||{},c=i.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&s.hide(a)}),c.target==="mouse"&&(g.show.bind("mousemove"+N,function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),c.adjust.mouse&&(i.hide.event&&(M.bind("mouseleave"+N,function(a){(a.relatedTarget||a.target)!==g.show[0]&&s.hide(a)}),O.target.bind("mouseenter"+N+" mouseleave"+N,function(a){P.onTarget=a.type==="mouseenter"})),g.document.bind("mousemove"+N,function(a){s.rendered&&P.onTarget&&!M.hasClass(z)&&M[0].offsetWidth>0&&s.reposition(a||v)}))),(c.adjust.resize||g.viewport.length)&&(d.event.special.resize?g.viewport:g.window).bind("resize"+N,o),(g.viewport.length||k&&M.css("position")==="fixed")&&g.viewport.bind("scroll"+N,o)}function _(){var c=[i.show.target[0],i.hide.target[0],s.rendered&&O.tooltip[0],i.position.container[0],i.position.viewport[0],i.position.container.closest("html")[0],a,b];s.rendered?d([]).pushStack(d.grep(c,function(a){return typeof a=="object"})).unbind(N):i.show.target.unbind(N+"-create")}var s=this,E=b.body,J=x+"-"+q,K=0,L=0,M=d(),N=".qtip-"+q,O,P;s.id=q,s.rendered=f,s.destroyed=f,s.elements=O={target:h},s.timers={img:{}},s.options=i,s.checks={},s.plugins={},s.cache=P={event:{},target:d(),disabled:f,attr:r,onTarget:f,lastClass:""},s.checks.builtin={"^id$":function(a,b,c){var g=c===e?t.nextid:c,h=x+"-"+g;g!==f&&g.length>0&&!d("#"+h).length&&(M[0].id=h,O.content[0].id=h+"-content",O.title[0].id=h+"-title")},"^content.text$":function(a,b,c){Y(c)},"^content.title.text$":function(a,b,c){if(!c)return T();!O.title&&c&&V(),X(c)},"^content.title.button$":function(a,b,c){W(c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new u.Corner(c))},"^position.container$":function(a,b,c){s.rendered&&M.appendTo(c)},"^show.ready$":function(){s.rendered?s.toggle(e):s.render(1)},"^style.classes$":function(a,b,c){M.attr("class",x+" qtip "+c)},"^style.widget|content.title":S,"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){M[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){var a=i.position;M.attr("tracking",a.target==="mouse"&&a.adjust.mouse),_(),Z()}},d.extend(s,{render:function(a){if(s.rendered)return s;var b=i.content.text,c=i.content.title.text,g=i.position;return d.attr(h[0],"aria-describedby",J),M=O.tooltip=d("
      ",{id:J,"class":x+" qtip "+B+" "+i.style.classes+" "+x+"-pos-"+i.position.my.abbrev(),width:i.style.width||"",height:i.style.height||"",tracking:g.target==="mouse"&&g.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":f,"aria-describedby":J+"-content","aria-hidden":e}).toggleClass(z,P.disabled).data("qtip",s).appendTo(i.position.container).append(O.content=d("
      ",{"class":x+"-content",id:J+"-content","aria-atomic":e})),s.rendered=-1,L=1,K=1,c&&(V(),d.isFunction(c)||X(c,f)),d.isFunction(b)||Y(b,f),s.rendered=e,S(),d.each(i.events,function(a,b){d.isFunction(b)&&M.bind(a==="toggle"?"tooltipshow tooltiphide":"tooltip"+a,b)}),d.each(u,function(){this.initialize==="render"&&this(s)}),Z(),M.queue("fx",function(b){R("render"),L=0,K=0,s.redraw(),(i.show.ready||a)&&s.toggle(e,P.event,f),b()}),s},get:function(a){var b,c;switch(a.toLowerCase()){case"dimensions":b={height:M.outerHeight(),width:M.outerWidth()};break;case"offset":b=u.offset(M,i.position.container);break;default:c=Q(a.toLowerCase()),b=c[0][c[1]],b=b.precedance?b.string():b}return b},set:function(a,b){function n(a,b){var c,d,e;for(c in l)for(d in l[c])if(e=(new RegExp(d,"i")).exec(a))b.push(e),l[c][d].apply(s,b)}var c=/^position\.(my|at|adjust|target|container)|style|content|show\.ready/i,h=/^content\.(title|attr)|style/i,j=f,k=f,l=s.checks,m;return"string"==typeof a?(m=a,a={},a[m]=b):a=d.extend(e,{},a),d.each(a,function(b,e){var f=Q(b.toLowerCase()),g;g=f[0][f[1]],f[0][f[1]]="object"==typeof e&&e.nodeType?d(e):e,a[b]=[f[0],f[1],e,g],j=c.test(b)||j,k=h.test(b)||k}),I(i),K=L=1,d.each(a,n),K=L=0,s.rendered&&M[0].offsetWidth>0&&(j&&s.reposition(i.position.target==="mouse"?g:P.event),k&&s.redraw()),s},toggle:function(a,c){function t(){a?(d.browser.msie&&M[0].style.removeAttribute("filter"),M.css("overflow",""),"string"==typeof h.autofocus&&d(h.autofocus,M).focus(),h.target.trigger("qtip-"+q+"-inactive")):M.css({display:"",visibility:"",opacity:"",left:"",top:""}),R(a?"visible":"hidden")}if(!s.rendered)return a?s.render(1):s;var g=a?"show":"hide",h=i[g],j=i[a?"hide":"show"],k=i.position,l=i.content,m=M[0].offsetWidth>0,n=a||h.target.length===1,o=!c||h.target.length<2||P.target[0]===c.target,p,r;(typeof a).search("boolean|number")&&(a=!m);if(!M.is(":animated")&&m===a&&o)return s;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(P.event.type)&&i.show.target.add(c.target).length===i.show.target.length&&M.has(c.relatedTarget).length)return s;P.event=d.extend({},c)}return R(g,[90])?(d.attr(M[0],"aria-hidden",!a),a?(P.origin=d.extend({},v),s.focus(c),d.isFunction(l.text)&&Y(l.text,f),d.isFunction(l.title.text)&&X(l.title.text,f),!G&&k.target==="mouse"&&k.adjust.mouse&&(d(b).bind("mousemove.qtip",function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),G=e),s.reposition(c,arguments[2]),!h.solo||d(A,h.solo).not(M).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(s.timers.show),delete P.origin,G&&!d(A+'[tracking="true"]:visible',h.solo).not(M).length&&(d(b).unbind("mousemove.qtip"),G=f),s.blur(c)),h.effect===f||n===f?(M[g](),t.call(M)):d.isFunction(h.effect)?(M.stop(1,1),h.effect.call(M,s),M.queue("fx",function(a){t(),a()})):M.fadeTo(90,a?1:0,t),a&&h.target.trigger("qtip-"+q+"-inactive"),s):s},show:function(a){return s.toggle(e,a)},hide:function(a){return s.toggle(f,a)},focus:function(a){if(!s.rendered)return s;var b=d(A),c=parseInt(M[0].style.zIndex,10),e=t.zindex+b.length,f=d.extend({},a),g;return M.hasClass(C)||R("focus",[e],f)&&(c!==e&&(b.each(function(){this.style.zIndex>c&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+C).qtip("blur",f)),M.addClass(C)[0].style.zIndex=e),s},blur:function(a){return M.removeClass(C),R("blur",[M.css("zIndex")],a),s},reposition:function(c,e){if(!s.rendered||K)return s;K=1;var g=i.position.target,h=i.position,j=h.my,k=h.at,q=h.adjust,r=q.method.split(" "),t=M.outerWidth(),w=M.outerHeight(),x=0,y=0,z=M.css("position")==="fixed",A=h.viewport,B={left:0,top:0},C=h.container,D=M[0].offsetWidth>0,E,F,G;if(d.isArray(g)&&g.length===2)k={x:m,y:l},B={left:g[0],top:g[1]};else if(g==="mouse"&&(c&&c.pageX||P.event.pageX))k={x:m,y:l},c=(c&&(c.type==="resize"||c.type==="scroll")?P.event:c&&c.pageX&&c.type==="mousemove"?c:v&&v.pageX&&(q.mouse||!c||!c.pageX)?{pageX:v.pageX,pageY:v.pageY}:!q.mouse&&P.origin&&P.origin.pageX&&i.show.distance?P.origin:c)||c||P.event||v||{},B={top:c.pageY,left:c.pageX};else{g==="event"&&c&&c.target&&c.type!=="scroll"&&c.type!=="resize"?P.target=d(c.target):g!=="event"&&(P.target=d(g.jquery?g:O.target)),g=P.target,g=d(g).eq(0);if(g.length===0)return s;g[0]===b||g[0]===a?(x=u.iOS?a.innerWidth:g.width(),y=u.iOS?a.innerHeight:g.height(),g[0]===a&&(B={top:(A||g).scrollTop(),left:(A||g).scrollLeft()})):u.imagemap&&g.is("area")?E=u.imagemap(s,g,k,u.viewport?r:f):u.svg&&typeof g[0].xmlbase=="string"?E=u.svg(s,g,k,u.viewport?r:f):(x=g.outerWidth(),y=g.outerHeight(),B=u.offset(g,C)),E&&(x=E.width,y=E.height,F=E.offset,B=E.position);if(u.iOS>3.1&&u.iOS<4.1||u.iOS>=4.3&&u.iOS<4.33||!u.iOS&&z)G=d(a),B.left-=G.scrollLeft(),B.top-=G.scrollTop();B.left+=k.x===o?x:k.x===p?x/2:0,B.top+=k.y===n?y:k.y===p?y/2:0}return B.left+=q.x+(j.x===o?-t:j.x===p?-t/2:0),B.top+=q.y+(j.y===n?-w:j.y===p?-w/2:0),u.viewport?(B.adjusted=u.viewport(s,B,h,x,y,t,w),F&&B.adjusted.left&&(B.left+=F.left),F&&B.adjusted.top&&(B.top+=F.top)):B.adjusted={left:0,top:0},R("move",[B,A.elem||A],c)?(delete B.adjusted,e===f||!D||isNaN(B.left)||isNaN(B.top)||g==="mouse"||!d.isFunction(h.effect)?M.css(B):d.isFunction(h.effect)&&(h.effect.call(M,s,d.extend({},B)),M.queue(function(a){d(this).css({opacity:"",height:""}),d.browser.msie&&this.style.removeAttribute("filter"),a()})),K=0,s):s},redraw:function(){if(s.rendered<1||L)return s;var a=i.style,b=i.position.container,c,d,e,f;return L=1,R("redraw"),a.height&&M.css(k,a.height),a.width?M.css(j,a.width):(M.css(j,"").appendTo(H),d=M.width(),d%2<1&&(d+=1),e=M.css("max-width")||"",f=M.css("min-width")||"",c=(e+f).indexOf("%")>-1?b.width()/100:0,e=(e.indexOf("%")>-1?c:1)*parseInt(e,10)||d,f=(f.indexOf("%")>-1?c:1)*parseInt(f,10)||0,d=e+f?Math.min(Math.max(d,f),e):d,M.css(j,Math.round(d)).appendTo(b)),R("redrawn"),L=0,s},disable:function(a){return"boolean"!=typeof a&&(a=!M.hasClass(z)&&!P.disabled),s.rendered?(M.toggleClass(z,a),d.attr(M[0],"aria-disabled",a)):P.disabled=!!a,s},enable:function(){return s.disable(f)},destroy:function(){var a=h[0],b=d.attr(a,F),c=h.data("qtip");s.destroyed=e,s.rendered&&(M.stop(1,0).remove(),d.each(s.plugins,function(){this.destroy&&this.destroy()})),clearTimeout(s.timers.show),clearTimeout(s.timers.hide),_();if(!c||s===c)d.removeData(a,"qtip"),i.suppress&&b&&(d.attr(a,"title",b),h.removeAttr(F)),h.removeAttr("aria-describedby");return h.unbind(".qtip-"+q),delete w[s.id],h}})}function K(a,c){var h,i,j,k,l,m=d(this),n=d(b.body),o=this===b?n:m,p=m.metadata?m.metadata(c.metadata):g,q=c.metadata.type==="html5"&&p?p[c.metadata.name]:g,r=m.data(c.metadata.name||"qtipopts");try{r=typeof r=="string"?d.parseJSON(r):r}catch(s){}k=d.extend(e,{},t.defaults,c,typeof r=="object"?I(r):g,I(q||p)),i=k.position,k.id=a;if("boolean"==typeof k.content.text){j=m.attr(k.content.attr);if(k.content.attr!==f&&j)k.content.text=j;else return f}i.container.length||(i.container=n),i.target===f&&(i.target=o),k.show.target===f&&(k.show.target=o),k.show.solo===e&&(k.show.solo=i.container.closest("body")),k.hide.target===f&&(k.hide.target=o),k.position.viewport===e&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new u.Corner(i.at),i.my=new u.Corner(i.my);if(d.data(this,"qtip"))if(k.overwrite)m.qtip("destroy");else if(k.overwrite===f)return f;return k.suppress&&(l=d.attr(this,"title"))&&d(this).removeAttr("title").attr(F,l).attr("title",""),h=new J(m,k,a,!!j),d.data(this,"qtip",h),m.bind("remove.qtip-"+a+" removeqtip.qtip-"+a,function(){h.destroy()}),h}function L(a){var b=this,c=a.elements.tooltip,g=a.options.content.ajax,h=t.defaults.content.ajax,i=".qtip-ajax",j=/)<[^<]*)*<\/script>/gi,k=e,l=f,m;a.checks.ajax={"^content.ajax":function(a,d,e){d==="ajax"&&(g=e),d==="once"?b.init():g&&g.url?b.load():c.unbind(i)}},d.extend(b,{init:function(){return g&&g.url&&c.unbind(i)[g.once?"one":"bind"]("tooltipshow"+i,b.load),b},load:function(c){function r(){var b;if(a.destroyed)return;k=f,p&&(l=e,a.show(c.originalEvent)),(b=h.complete||g.complete)&&d.isFunction(b)&&b.apply(g.context||a,arguments)}function s(b,c,e){var f;if(a.destroyed)return;o&&"string"==typeof b&&(b=d("
      ").append(b.replace(j,"")).find(o)),(f=h.success||g.success)&&d.isFunction(f)?f.call(g.context||a,b,c,e):a.set("content.text",b)}function t(b,c,d){if(a.destroyed||b.status===0)return;a.set("content.text",c+": "+d)}if(l){l=f;return}var i=g.url.lastIndexOf(" "),n=g.url,o,p=!g.loading&&k;if(p)try{c.preventDefault()}catch(q){}else if(c&&c.isDefaultPrevented())return b;m&&m.abort&&m.abort(),i>-1&&(o=n.substr(i),n=n.substr(0,i)),m=d.ajax(d.extend({error:h.error||t,context:a},g,{url:n,success:s,complete:r}))},destroy:function(){m&&m.abort&&m.abort(),a.destroyed=e}}),b.init()}function M(a,b,c){var d=Math.ceil(b/2),e=Math.ceil(c/2),f={bottomright:[[0,0],[b,c],[b,0]],bottomleft:[[0,0],[b,0],[0,c]],topright:[[0,c],[b,0],[b,c]],topleft:[[0,0],[0,c],[b,c]],topcenter:[[0,c],[d,0],[b,c]],bottomcenter:[[0,0],[b,0],[d,c]],rightcenter:[[0,0],[b,e],[0,c]],leftcenter:[[b,0],[b,c],[0,e]]};return f.lefttop=f.bottomright,f.righttop=f.bottomleft,f.leftbottom=f.topright,f.rightbottom=f.topleft,f[a.string()]}function N(a,b){function D(a){var b=v.is(":visible");v.show(),a(),v.toggle(b)}function E(){x.width=r.height,x.height=r.width}function F(){x.width=r.width,x.height=r.height}function G(b,d,g,j){if(!t.tip)return;var k=q.corner.clone(),u=g.adjusted,v=a.options.position.adjust.method.split(" "),x=v[0],y=v[1]||v[0],z={left:f,top:f,x:0,y:0},A,B={},C;q.corner.fixed!==e&&(x===s&&k.precedance===h&&u.left&&k.y!==p?k.precedance=k.precedance===h?i:h:x!==s&&u.left&&(k.x=k.x===p?u.left>0?m:o:k.x===m?o:m),y===s&&k.precedance===i&&u.top&&k.x!==p?k.precedance=k.precedance===i?h:i:y!==s&&u.top&&(k.y=k.y===p?u.top>0?l:n:k.y===l?n:l),k.string()!==w.corner.string()&&(w.top!==u.top||w.left!==u.left)&&q.update(k,f)),A=q.position(k,u),A[k.x]+=I(k,k.x),A[k.y]+=I(k,k.y),A.right!==c&&(A.left=-A.right),A.bottom!==c&&(A.top=-A.bottom),A.user=Math.max(0,r.offset);if(z.left=x===s&&!!u.left)k.x===p?B["margin-left"]=z.x=A["margin-left"]-u.left:(C=A.right!==c?[u.left,-A.left]:[-u.left,A.left],(z.x=Math.max(C[0],C[1]))>C[0]&&(g.left-=u.left,z.left=f),B[A.right!==c?o:m]=z.x);if(z.top=y===s&&!!u.top)k.y===p?B["margin-top"]=z.y=A["margin-top"]-u.top:(C=A.bottom!==c?[u.top,-A.top]:[-u.top,A.top],(z.y=Math.max(C[0],C[1]))>C[0]&&(g.top-=u.top,z.top=f),B[A.bottom!==c?n:l]=z.y);t.tip.css(B).toggle(!(z.x&&z.y||k.x===p&&z.y||k.y===p&&z.x)),g.left-=A.left.charAt?A.user:x!==s||z.top||!z.left&&!z.top?A.left:0,g.top-=A.top.charAt?A.user:y!==s||z.left||!z.left&&!z.top?A.top:0,w.left=u.left,w.top=u.top,w.corner=k.clone()}function H(){var b=r.corner,c=a.options.position,d=c.at,g=c.my.string?c.my.string():c.my;return b===f||g===f&&d===f?f:(b===e?q.corner=new u.Corner(g):b.string||(q.corner=new u.Corner(b),q.corner.fixed=e),w.corner=new u.Corner(q.corner.string()),q.corner.string()!=="centercenter")}function I(a,b,c){b=b?b:a[a.precedance];var d=t.titlebar&&a.y===l,e=d?t.titlebar:v,f="border-"+b+"-width",g=function(a){return parseInt(a.css(f),10)},h;return D(function(){h=(c?g(c):g(t.content)||g(e)||g(v))||0}),h}function J(a){var b=t.titlebar&&a.y===l,c=b?t.titlebar:t.content,e=d.browser.mozilla,f=e?"-moz-":d.browser.webkit?"-webkit-":"",g="border-radius-"+a.y+a.x,h="border-"+a.y+"-"+a.x+"-radius",i=function(a){return parseInt(c.css(a),10)||parseInt(v.css(a),10)},j;return D(function(){j=i(h)||i(f+h)||i(f+g)||i(g)||0}),j}function K(a){function z(a,b,c){var d=a.css(b)||n;return c&&d===a.css(c)?f:j.test(d)?f:d}var b,c,g,h=t.tip.css("cssText",""),i=a||q.corner,j=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,k="border-"+i[i.precedance]+"-color",m="background-color",n="transparent",o=" !important",s=t.titlebar,u=s&&(i.y===l||i.y===p&&h.position().top+x.height/2+r.offset-1,f=c*(e?.5:1),g=Math.pow,h=Math.round,l,m,n,o=Math.sqrt(g(f,2)+g(d,2)),q=[z/f*o,z/d*o];return q[2]=Math.sqrt(g(q[0],2)-g(z,2)),q[3]=Math.sqrt(g(q[1],2)-g(z,2)),l=o+q[2]+q[3]+(e?0:q[0]),m=l/o,n=[h(m*d),h(m*c)],{height:n[b?0:1],width:n[b?1:0]}}function N(a,b,c){return"'}var q=this,r=a.options.style.tip,t=a.elements,v=t.tooltip,w={top:0,left:0},x={width:r.width,height:r.height},y={},z=r.border||0,A=".qtip-tip",B=!!(d("")[0]||{}).getContext,C;q.corner=g,q.mimic=g,q.border=z,q.offset=r.offset,q.size=x,a.checks.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){q.init()||q.destroy(),a.reposition()},"^style.tip.(height|width)$":function(){x={width:r.width,height:r.height},q.create(),q.update(),a.reposition()},"^content.title.text|style.(classes|widget)$":function(){t.tip&&t.tip.length&&q.update()}},d.extend(q,{init:function(){var a=H()&&(B||d.browser.msie);return a&&(q.create(),q.update(),v.unbind(A).bind("tooltipmove"+A,G),B||v.bind("tooltipredraw tooltipredrawn",function(a){a.type==="tooltipredraw"?(C=t.tip.html(),t.tip.html("")):t.tip.html(C)})),a},create:function(){var a=x.width,b=x.height,c;t.tip&&t.tip.remove(),t.tip=d("
      ",{"class":"ui-tooltip-tip"}).css({width:a,height:b}).prependTo(v),B?d("").appendTo(t.tip)[0].getContext("2d").save():(c=N("shape",'coordorigin="0,0"',"position:absolute;"),t.tip.html(c+c),d("*",t.tip).bind("click mousedown",function(a){a.stopPropagation()}))},update:function(a,b){var c=t.tip,j=c.children(),k=x.width,s=x.height,A=r.mimic,C=Math.round,D,G,H,J,O;a||(a=w.corner||q.corner),A===f?A=a:(A=new u.Corner(A),A.precedance=a.precedance,A.x==="inherit"?A.x=a.x:A.y==="inherit"?A.y=a.y:A.x===A.y&&(A[a.precedance]=a[a.precedance])),D=A.precedance,a.precedance===h?E():F(),t.tip.css({width:k=x.width,height:s=x.height}),K(a),y.border!=="transparent"?(z=I(a,g),r.border===0&&z>0&&(y.fill=y.border),q.border=z=r.border!==e?r.border:z):q.border=z=0,H=M(A,k,s),q.size=O=L(a),c.css(O),a.precedance===i?J=[C(A.x===m?z:A.x===o?O.width-k-z:(O.width-k)/2),C(A.y===l?O.height-s:0)]:J=[C(A.x===m?O.width-k:0),C(A.y===l?z:A.y===n?O.height-s-z:(O.height-s)/2)],B?(j.attr(O),G=j[0].getContext("2d"),G.restore(),G.save(),G.clearRect(0,0,3e3,3e3),G.fillStyle=y.fill,G.strokeStyle=y.border,G.lineWidth=z*2,G.lineJoin="miter",G.miterLimit=100,G.translate(J[0],J[1]),G.beginPath(),G.moveTo(H[0][0],H[0][1]),G.lineTo(H[1][0],H[1][1]),G.lineTo(H[2][0],H[2][1]),G.closePath(),z&&(v.css("background-clip")==="border-box"&&(G.strokeStyle=y.fill,G.stroke()),G.strokeStyle=y.border,G.stroke()),G.fill()):(H="m"+H[0][0]+","+H[0][1]+" l"+H[1][0]+","+H[1][1]+" "+H[2][0]+","+H[2][1]+" xe",J[2]=z&&/^(r|b)/i.test(a.string())?parseFloat(d.browser.version,10)===8?2:1:0,j.css({coordsize:k+z+" "+(s+z),antialias:""+(A.string().indexOf(p)>-1),left:J[0],top:J[1],width:k+z,height:s+z}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k+z+" "+(s+z),path:H,fillcolor:y.fill,filled:!!a,stroked:!a}).toggle(!!z||!!a),!a&&b.html()===""&&b.html(N("stroke",'weight="'+z*2+'px" color="'+y.border+'" miterlimit="1000" joinstyle="miter"'))})),b!==f&&q.position(a)},position:function(a){var b=t.tip,c={},e=Math.max(0,r.offset),g,n,o;return r.corner===f||!b?f:(a=a||q.corner,g=a.precedance,n=L(a),o=[a.x,a.y],g===h&&o.reverse(),d.each(o,function(b,d){var f,h,o;d===p?(f=g===i?m:l,c[f]="50%",c["margin-"+f]=-Math.round(n[g===i?j:k]/2)+e):(f=I(a,d),h=I(a,d,t.content),o=J(a),c[d]=b?h:e+(o>f?o:-f))}),c[a[g]]-=n[g===h?j:k],b.css({top:"",bottom:"",left:"",right:"",margin:""}).css(c),c)},destroy:function(){t.tip&&t.tip.remove(),t.tip=!1,v.unbind(A)}}),q.init()}function O(c){function s(){q=d(p,j).not("[disabled]").map(function(){return typeof this.focus=="function"?this:null})}function t(a){q.length<1&&a.length?a.not("body").blur():q.first().focus()}function v(a){var b=d(a.target),c=b.closest(".qtip"),e;e=c.length<1?f:parseInt(c[0].style.zIndex,10)>parseInt(j[0].style.zIndex,10),!e&&d(a.target).closest(A)[0]!==j[0]&&t(b)}var g=this,h=c.options.show.modal,i=c.elements,j=i.tooltip,k="#qtip-overlay",l=".qtipmodal",m=l+c.id,n="is-modal-qtip",o=d(b.body),p=u.modal.focusable.join(","),q={},r;c.checks.modal={"^show.modal.(on|blur)$":function(){g.init(),i.overlay.toggle(j.is(":visible"))},"^content.text$":function(){s()}},d.extend(g,{init:function(){return h.on?(r=g.create(),j.attr(n,e).css("z-index",u.modal.zindex+d(A+"["+n+"]").length).unbind(l).unbind(m).bind("tooltipshow"+l+" tooltiphide"+l,function(a,b,c){var e=a.originalEvent;if(a.target===j[0])if(e&&a.type==="tooltiphide"&&/mouse(leave|enter)/.test(e.type)&&d(e.relatedTarget).closest(r[0]).length)try{a.preventDefault()}catch(f){}else(!e||e&&!e.solo)&&g[a.type.replace("tooltip","")](a,c)}).bind("tooltipfocus"+l,function(a){if(a.isDefaultPrevented()||a.target!==j[0])return;var b=d(A).filter("["+n+"]"),c=u.modal.zindex+b.length,e=parseInt(j[0].style.zIndex,10);r[0].style.zIndex=c-2,b.each(function(){this.style.zIndex>e&&(this.style.zIndex-=1)}),b.end().filter("."+C).qtip("blur",a.originalEvent),j.addClass(C)[0].style.zIndex=c;try{a.preventDefault()}catch(f){}}).bind("tooltiphide"+l,function(a){a.target===j[0]&&d("["+n+"]").filter(":visible").not(j).last().qtip("focus",a)}),h.escape&&d(b).unbind(m).bind("keydown"+m,function(a){a.keyCode===27&&j.hasClass(C)&&c.hide(a)}),h.blur&&i.overlay.unbind(m).bind("click"+m,function(a){j.hasClass(C)&&c.hide(a)}),s(),g):g},create:function(){function c(){r.css({height:d(a).height(),width:d(a).width()})}var b=d(k);return b.length?i.overlay=b.insertAfter(d(A).last()):(r=i.overlay=d("
      ",{id:k.substr(1),html:"
      ",mousedown:function(){return f}}).hide().insertAfter(d(A).last()),d(a).unbind(l).bind("resize"+l,c),c(),r)},toggle:function(a,b,c){if(a&&a.isDefaultPrevented())return g;var i=h.effect,k=b?"show":"hide",l=r.is(":visible"),p=d("["+n+"]").filter(":visible").not(j),q;return r||(r=g.create()),r.is(":animated")&&l===b||!b&&p.length?g:(b?(r.css({left:0,top:0}),r.toggleClass("blurs",h.blur),h.stealfocus!==f&&(o.bind("focusin"+m,v),t(d("body :focus")))):o.unbind("focusin"+m),r.stop(e,f),d.isFunction(i)?i.call(r,b):i===f?r[k]():r.fadeTo(parseInt(c,10)||90,b?1:0,function(){b||d(this).hide()}),b||r.queue(function(a){r.css({left:"",top:""}),a()}),g)},show:function(a,b){return g.toggle(a,e,b)},hide:function(a,b){return g.toggle(a,f,b)},destroy:function(){var a=r;return a&&(a=d("["+n+"]").not(j).length<1,a?(i.overlay.remove(),d(b).unbind(l)):i.overlay.unbind(l+c.id),o.undelegate("*","focusin"+m)),j.removeAttr(n).unbind(l)}}),g.init()}function P(a){var b=this,c=a.elements,e=c.tooltip,f=".bgiframe-"+a.id;d.extend(b,{init:function(){c.bgiframe=d(''),c.bgiframe.appendTo(e),e.bind("tooltipmove"+f,b.adjust)},adjust:function(){var b=a.get("dimensions"),d=a.plugins.tip,f=c.tip,g,h;h=parseInt(e.css("border-left-width"),10)||0,h={left:-h,top:-h},d&&f&&(g=d.corner.precedance==="x"?["width","left"]:["height","top"],h[g[1]]-=f[g[0]]()),c.bgiframe.css(h).css(b)},destroy:function(){c.bgiframe.remove(),e.unbind(f)}}),b.init()}var e=!0,f=!1,g=null,h="x",i="y",j="width",k="height",l="top",m="left",n="bottom",o="right",p="center",q="flip",r="flipinvert",s="shift",t,u,v,w={},x="ui-tooltip",y="ui-widget",z="ui-state-disabled",A="div.qtip."+x,B=x+"-default",C=x+"-focus",D=x+"-hover",E="_replacedByqTip",F="oldtitle",G,H;H=d("
      ",{id:"qtip-rcontainer"}),d(function(){H.appendTo(b.body)}),t=d.fn.qtip=function(a,b,h){var i=(""+a).toLowerCase(),j=g,k=d.makeArray(arguments).slice(1),l=k[k.length-1],m=this[0]?d.data(this[0],"qtip"):g;if(!arguments.length&&m||i==="api")return m;if("string"==typeof a)return this.each(function(){var a=d.data(this,"qtip");if(!a)return e;l&&l.timeStamp&&(a.cache.event=l);if(i!=="option"&&i!=="options"||!b)a[i]&&a[i].apply(a[i],k);else if(d.isPlainObject(b)||h!==c)a.set(b,h);else return j=a.get(b),f}),j!==g?j:this;if("object"==typeof a||!arguments.length)return m=I(d.extend(e,{},a)),t.bind.call(this,m,l)},t.bind=function(a,b){return this.each(function(g){function n(a){function b(){l.render(typeof a=="object"||h.show.ready),i.show.add(i.hide).unbind(k)}if(l.cache.disabled)return f;l.cache.event=d.extend({},a),l.cache.target=a?d(a.target):[c],h.show.delay>0?(clearTimeout(l.timers.show),l.timers.show=setTimeout(b,h.show.delay),j.show!==j.hide&&i.hide.bind(j.hide,function(){clearTimeout(l.timers.show)})):b()}var h,i,j,k,l,m;m=d.isArray(a.id)?a.id[g]:a.id,m=!m||m===f||m.length<1||w[m]?t.nextid++:w[m]=m,k=".qtip-"+m+"-create",l=K.call(this,m,a);if(l===f)return e;h=l.options,d.each(u,function(){this.initialize==="initialize"&&this(l)}),i={show:h.show.target,hide:h.hide.target},j={show:d.trim(""+h.show.event).replace(/ /g,k+" ")+k,hide:d.trim(""+h.hide.event).replace(/ /g,k+" ")+k},/mouse(over|enter)/i.test(j.show)&&!/mouse(out|leave)/i.test(j.hide)&&(j.hide+=" mouseleave"+k),i.show.bind("mousemove"+k,function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"},l.cache.onTarget=e}),i.show.bind(j.show,n),(h.show.ready||h.prerender)&&n(b)})},u=t.plugins={Corner:function(a){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,p).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase();var b=a.charAt(0);this.precedance=b==="t"||b==="b"?i:h,this.string=function(){return this.precedance===i?this.y+this.x:this.x+this.y},this.abbrev=function(){var a=this.x.substr(0,1),b=this.y.substr(0,1);return a===b?a:this.precedance===i?b+a:a+b},this.invertx=function(a){this.x=this.x===m?o:this.x===o?m:a||this.x},this.inverty=function(a){this.y=this.y===l?n:this.y===n?l:a||this.y},this.clone=function(){return{x:this.x,y:this.y,precedance:this.precedance,string:this.string,abbrev:this.abbrev,clone:this.clone,invertx:this.invertx,inverty:this.inverty}}},offset:function(a,b){function j(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}var c=a.offset(),e=a.closest("body")[0],f=b,g,h,i;if(f){do f.css("position")!=="static"&&(h=f.position(),c.left-=h.left+(parseInt(f.css("borderLeftWidth"),10)||0)+(parseInt(f.css("marginLeft"),10)||0),c.top-=h.top+(parseInt(f.css("borderTopWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0),!g&&(i=f.css("overflow"))!=="hidden"&&i!=="visible"&&(g=f));while((f=d(f[0].offsetParent)).length);g&&g[0]!==e&&j(g,1)}return c},iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||f,fn:{attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,F):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(F,b))}return d.fn["attr"+E].apply(this,arguments)},clone:function(a){var b=d([]),c="title",e=d.fn["clone"+E].apply(this,arguments);return a||e.filter("["+F+"]").attr("title",function(){return d.attr(this,F)}).removeAttr(F),e}}},d.each(u.fn,function(a,b){if(!b||d.fn[a+E])return e;var c=d.fn[a+E]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+E]=d.cleanData,d.cleanData=function(a){for(var b=0,e;(e=a[b])!==c;b++)try{d(e).triggerHandler("removeqtip")}catch(f){}d["cleanData"+E](a)}),t.version="@VERSION",t.nextid=0,t.inactiveEvents="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),t.zindex=15e3,t.defaults={prerender:f,id:f,overwrite:e,suppress:e,content:{text:e,attr:"title",title:{text:f,button:f}},position:{my:"top left",at:"bottom right",target:f,container:f,viewport:f,adjust:{x:0,y:0,mouse:e,resize:e,method:"flip flip"},effect:function(a,b,c){d(this).animate(b,{duration:200,queue:f})}},show:{target:f,event:"mouseenter",effect:e,delay:90,solo:f,ready:f,autofocus:f},hide:{target:f,event:"mouseleave",effect:e,delay:0,fixed:f,inactive:f,leave:"window",distance:f},style:{classes:"",widget:f,width:f,height:f,def:e},events:{render:g,move:g,show:g,hide:g,toggle:g,visible:g,hidden:g,focus:g,blur:g}},u.svg=function(a,c,e,f){var g=d(b),h=c[0],i={width:0,height:0,position:{top:1e10,left:1e10}},j,k,l,m,n;while(!h.getBBox)h=h.parentNode;if(h.getBBox&&h.parentNode){j=h.getBBox(),k=h.getScreenCTM(),l=h.farthestViewportElement||h;if(!l.createSVGPoint)return i;m=l.createSVGPoint(),m.x=j.x,m.y=j.y,n=m.matrixTransform(k),i.position.left=n.x,i.position.top=n.y,m.x+=j.width,m.y+=j.height,n=m.matrixTransform(k),i.width=n.x-i.position.left,i.height=n.y-i.position.top,i.position.left+=g.scrollLeft(),i.position.top+=g.scrollTop()}return i},u.ajax=function(a){var b=a.plugins.ajax;return"object"==typeof b?b:a.plugins.ajax=new L(a)},u.ajax.initialize="render",u.ajax.sanitize=function(a){var b=a.content,c;b&&"ajax"in b&&(c=b.ajax,typeof c!="object"&&(c=a.content.ajax={url:c}),"boolean"!=typeof c.once&&c.once&&(c.once=!!c.once))},d.extend(e,t.defaults,{content:{ajax:{loading:e,once:e}}}),u.tip=function(a){var b=a.plugins.tip;return"object"==typeof b?b:a.plugins.tip=new N(a)},u.tip.initialize="render",u.tip.sanitize=function(a){var b=a.style,c;b&&"tip"in b&&(c=a.style.tip,typeof c!="object"&&(a.style.tip={corner:c}),/string|boolean/i.test(typeof c.corner)||(c.corner=e),typeof c.width!="number"&&delete c.width,typeof c.height!="number"&&delete c.height,typeof c.border!="number"&&c.border!==e&&delete c.border,typeof c.offset!="number"&&delete c.offset)},d.extend(e,t.defaults,{style:{tip:{corner:e,mimic:f,width:6,height:6,border:e,offset:0}}}),u.modal=function(a){var b=a.plugins.modal;return"object"==typeof b?b:a.plugins.modal=new O(a)},u.modal.initialize="render",u.modal.sanitize=function(a){a.show&&(typeof a.show.modal!="object"?a.show.modal={on:!!a.show.modal}:typeof a.show.modal.on=="undefined"&&(a.show.modal.on=e))},u.modal.zindex=t.zindex-200,u.modal.focusable=["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"],d.extend(e,t.defaults,{show:{modal:{on:f,effect:e,blur:e,stealfocus:e,escape:e}}}),u.viewport=function(c,d,e,f,g,q,t){function L(a,b,c,e,f,g,h,i,j){var k=d[f],l=w[a],m=y[a],n=c===s,o=-E.offset[f]+D.offset[f]+D["scroll"+f],q=l===f?j:l===g?-j:-j/2,t=m===f?i:m===g?-i:-i/2,u=G&&G.size?G.size[h]||0:0,v=G&&G.corner&&G.corner.precedance===a&&!n?u:0,x=o-k+v,z=k+j-D[h]-o+v,A=q-(w.precedance===a||l===w[b]?t:0)-(m===p?i/2:0);return n?(v=G&&G.corner&&G.corner.precedance===b?u:0,A=(l===f?1:-1)*q-v,d[f]+=x>0?x:z>0?-z:0,d[f]=Math.max(-E.offset[f]+D.offset[f]+(v&&G.corner[a]===p?G.offset:0),k-A,Math.min(Math.max(-E.offset[f]+D.offset[f]+D[h],k+A),d[f]))):(e*=c===r?2:0,x>0&&(l!==f||z>0)?(d[f]-=A+e,J["invert"+a](f)):z>0&&(l!==g||x>0)&&(d[f]-=(l===p?-A:A)+e,J["invert"+a](g)),d[f]z&&(d[f]=k,J=w.clone())),d[f]-k}var u=e.target,v=c.elements.tooltip,w=e.my,y=e.at,z=e.adjust,A=z.method.split(" "),B=A[0],C=A[1]||A[0],D=e.viewport,E=e.container,F=c.cache,G=c.plugins.tip,H={left:0,top:0},I,J,K;if(!D.jquery||u[0]===a||u[0]===b.body||z.method==="none")return H;I=v.css("position")==="fixed",D={elem:D,height:D[(D[0]===a?"h":"outerH")+"eight"](),width:D[(D[0]===a?"w":"outerW")+"idth"](),scrollleft:I?0:D.scrollLeft(),scrolltop:I?0:D.scrollTop(),offset:D.offset()||{left:0,top:0}},E={elem:E,scrollLeft:E.scrollLeft(),scrollTop:E.scrollTop(),offset:E.offset()||{left:0,top:0}};if(B!=="shift"||C!=="shift")J=w.clone();return H={left:B!=="none"?L(h,i,B,z.x,m,o,j,f,q):0,top:C!=="none"?L(i,h,C,z.y,l,n,k,g,t):0},J&&F.lastClass!==(K=x+"-pos-"+J.abbrev())&&v.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=K),H},u.imagemap=function(a,b,c,e){function v(a,b,c){var d=0,e=1,f=1,g=0,h=0,i=a.width,j=a.height;while(i>0&&j>0&&e>0&&f>0){i=Math.floor(i/2),j=Math.floor(j/2),c.x===m?e=i:c.x===o?e=a.width-i:e+=Math.floor(i/2),c.y===l?f=j:c.y===n?f=a.height-j:f+=Math.floor(j/2),d=b.length;while(d--){if(b.length<2)break;g=b[d][0]-a.position.left,h=b[d][1]-a.position.top,(c.x===m&&g>=e||c.x===o&&g<=e||c.x===p&&(ga.width-e)||c.y===l&&h>=f||c.y===n&&h<=f||c.y===p&&(ha.height-f))&&b.splice(d,1)}}return{left:b[0][0],top:b[0][1]}}b.jquery||(b=d(b));var f=a.cache.areas={},g=(b[0].shape||b.attr("shape")).toLowerCase(),h=b[0].coords||b.attr("coords"),i=h.split(","),j=[],k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),q=k.offset(),r={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10}},s=0,t=0,u;q.left+=Math.ceil((k.outerWidth()-k.width())/2),q.top+=Math.ceil((k.outerHeight()-k.height())/2);if(g==="poly"){s=i.length;while(s--)t=[parseInt(i[--s],10),parseInt(i[s+1],10)],t[0]>r.position.right&&(r.position.right=t[0]),t[0]r.position.bottom&&(r.position.bottom=t[1]),t[1]', +closeClass:"simplemodal-close",escClose:!0,overlayClose:!1,fixed:!0,position:null,persist:!1,modal:!0,onOpen:null,onShow:null,onClose:null};b.modal.impl={d:{},init:function(a,d){if(this.d.data)return!1;n=b.browser.msie&&!b.support.boxModel;this.o=b.extend({},b.modal.defaults,d);this.zIndex=this.o.zIndex;this.occb=!1;if("object"===typeof a){if(a=a instanceof b?a:b(a),this.d.placeholder=!1,0").attr("id","simplemodal-placeholder").css({display:"none"})), +this.d.placeholder=!0,this.display=a.css("display"),!this.o.persist))this.d.orig=a.clone(!0)}else if("string"===typeof a||"number"===typeof a)a=b("
      ").html(a);else return alert("SimpleModal Error: Unsupported data type: "+typeof a),this;this.create(a);this.open();b.isFunction(this.o.onShow)&&this.o.onShow.apply(this,[this.d]);return this},create:function(a){this.getDimensions();if(this.o.modal&&m)this.d.iframe=b('').css(b.extend(this.o.iframeCss, +{display:"none",opacity:0,position:"fixed",height:h[0],width:h[1],zIndex:this.o.zIndex,top:0,left:0})).appendTo(this.o.appendTo);this.d.overlay=b("
      ").attr("id",this.o.overlayId).addClass("simplemodal-overlay").css(b.extend(this.o.overlayCss,{display:"none",opacity:this.o.opacity/100,height:this.o.modal?j[0]:0,width:this.o.modal?j[1]:0,position:"fixed",left:0,top:0,zIndex:this.o.zIndex+1})).appendTo(this.o.appendTo);this.d.container=b("
      ").attr("id",this.o.containerId).addClass("simplemodal-container").css(b.extend({position:this.o.fixed? +"fixed":"absolute"},this.o.containerCss,{display:"none",zIndex:this.o.zIndex+2})).append(this.o.close&&this.o.closeHTML?b(this.o.closeHTML).addClass(this.o.closeClass):"").appendTo(this.o.appendTo);this.d.wrap=b("
      ").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(this.d.container);this.d.data=a.attr("id",a.attr("id")||this.o.dataId).addClass("simplemodal-data").css(b.extend(this.o.dataCss,{display:"none"})).appendTo("body");this.setContainerDimensions(); +this.d.data.appendTo(this.d.wrap);(m||n)&&this.fixIE()},bindEvents:function(){var a=this;b("."+a.o.closeClass).bind("click.simplemodal",function(b){b.preventDefault();a.close()});a.o.modal&&a.o.close&&a.o.overlayClose&&a.d.overlay.bind("click.simplemodal",function(b){b.preventDefault();a.close()});l.bind("keydown.simplemodal",function(b){a.o.modal&&9===b.keyCode?a.watchTab(b):a.o.close&&a.o.escClose&&27===b.keyCode&&(b.preventDefault(),a.close())});k.bind("resize.simplemodal orientationchange.simplemodal", +function(){a.getDimensions();a.o.autoResize?a.setContainerDimensions():a.o.autoPosition&&a.setPosition();m||n?a.fixIE():a.o.modal&&(a.d.iframe&&a.d.iframe.css({height:h[0],width:h[1]}),a.d.overlay.css({height:j[0],width:j[1]}))})},unbindEvents:function(){b("."+this.o.closeClass).unbind("click.simplemodal");l.unbind("keydown.simplemodal");k.unbind(".simplemodal");this.d.overlay.unbind("click.simplemodal")},fixIE:function(){var a=this.o.position;b.each([this.d.iframe||null,!this.o.modal?null:this.d.overlay, +"fixed"===this.d.container.css("position")?this.d.container:null],function(b,f){if(f){var g=f[0].style;g.position="absolute";if(2>b)g.removeExpression("height"),g.removeExpression("width"),g.setExpression("height",'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"'),g.setExpression("width",'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"');else{var c,e;a&&a.constructor=== +Array?(c=a[0]?"number"===typeof a[0]?a[0].toString():a[0].replace(/px/,""):f.css("top").replace(/px/,""),c=-1===c.indexOf("%")?c+' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"':parseInt(c.replace(/%/,""))+' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',a[1]&&(e="number"===typeof a[1]? +a[1].toString():a[1].replace(/px/,""),e=-1===e.indexOf("%")?e+' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"':parseInt(e.replace(/%/,""))+' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"')):(c='(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"', +e='(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"');g.removeExpression("top");g.removeExpression("left");g.setExpression("top",c);g.setExpression("left",e)}}})},focus:function(a){var d=this,a=a&&-1!==b.inArray(a,["first","last"])?a:"first",f=b(":input:enabled:visible:"+a,d.d.wrap);setTimeout(function(){0c?c:dc?c:this.o.minHeight&&"auto"!==i&&fe?e:ae?e:this.o.minWidth&&"auto"!==c&&gd||g>a?"auto":"visible"});this.o.autoPosition&&this.setPosition()},setPosition:function(){var a,b;a=h[0]/2-this.d.container.outerHeight(!0)/2;b=h[1]/2-this.d.container.outerWidth(!0)/2;var f="fixed"!==this.d.container.css("position")?k.scrollTop():0;this.o.position&&"[object Array]"===Object.prototype.toString.call(this.o.position)?(a=f+(this.o.position[0]||a),b=this.o.position[1]|| +b):a=f+a;this.d.container.css({left:b,top:a})},watchTab:function(a){if(0' in the URL, then set this var + +var myVisualizer = null; // singleton ExecutionVisualizer instance + +var VIZ_LABEL = "Run and Visualize Code"; + + +var pyInputCodeMirror; // CodeMirror object that contains the solution code +var pyTestInputCodeMirror; // CodeMirror object that contains the test code + + +$(document).ready(function() { + problemName = window.location.search; + if (!problemName) { + alert("Error! Pass in a valid problem name in the url as '?'"); + } + else { + problemName = problemName.slice(1); // strip off '?' + } + + + $("#embedLinkDiv,#gradingPane,#pyOutputPane").hide(); + + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 4, + indentUnit: 4, + // convert tab into four spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + }); + pyInputCodeMirror.setSize(null, '300px'); + + pyTestInputCodeMirror = CodeMirror(document.getElementById('testInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 4, + indentUnit: 4, + // convert tab into four spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + }); + pyTestInputCodeMirror.setSize(null, '100px'); + + + // be friendly to the browser's forward and back buttons + // thanks to http://benalman.com/projects/jquery-bbq-plugin/ + $(window).bind("hashchange", function(e) { + appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode + + if (appMode === undefined || appMode == 'edit') { + $("#pyInputPane").show(); + $("#pyOutputPane,#gradingPane").hide(); + $("#embedLinkDiv").hide(); + + // destroy all annotation bubbles (NB: kludgy) + if (myVisualizer) { + myVisualizer.destroyAllAnnotationBubbles(); + } + } + else if (appMode == 'display') { + $("#pyInputPane").hide(); + $("#pyOutputPane,#gradingPane").show(); + $("#embedLinkDiv").show(); + + $('#executeBtn').html(VIZ_LABEL); + $('#executeBtn').attr('disabled', false); + + + // do this AFTER making #pyOutputPane visible, or else + // jsPlumb connectors won't render properly + myVisualizer.updateOutput(); + + // customize edit button click functionality AFTER rendering (NB: awkward!) + $('#pyOutputPane #editCodeLinkDiv').show(); + $('#pyOutputPane #editBtn').click(function() { + enterEditMode(); + }); + + $('#gradeStdout').val(''); // clear 'em + $('#submitGradeBtn').html('Submit for Grading'); + $('#submitGradeBtn').attr('disabled', false); + } + else if (appMode == 'display_no_frills') { + $("#pyInputPane").hide(); + $("#pyOutputPane,#gradingPane").show(); + $("#embedLinkDiv").show(); + } + else { + assert(false); + } + + $('#urlOutput,#embedCodeOutput').val(''); // clear to avoid stale values + }); + + + function executeCode(inputCod, testCod) { + backend_script = python3_backend_script; + + var allCod = inputCod + '\n\n# test code (ungraded)\n' + testCod; + + var nCodeLines = inputCod.split('\n').length + 2; + + $('#executeBtn').html("Please wait ... processing your code"); + $('#executeBtn').attr('disabled', true); + $("#pyOutputPane,#gradingPane").hide(); + $("#embedLinkDiv").hide(); + + var backendOptionsObj = {cumulative_mode: false, + heap_primitives: false, + show_only_outputs: false, + py_crazy_mode: false, + origin: 'matrixtutor.js'}; + + var frontendOptionsObj = {updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');}, + compactFuncLabels: true, + jumpToEnd: true, + } + + function handleUncaughtExceptionFunc(trace) { + if (trace.length == 1) { + var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (errorLineNo !== undefined) { + + if (errorLineNo < nCodeLines) { + // highlight the faulting line in pyInputCodeMirror + pyInputCodeMirror.focus(); + pyInputCodeMirror.setCursor(errorLineNo, 0); + // TODO: refactor to use new CodeMirror version + pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); + + pyInputCodeMirror.setOption('onChange', function() { + pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal + pyInputCodeMirror.setOption('onChange', null); // cancel + }); + } + else { + // instead highlight the faulting line in pyTestInputCodeMirror + errorLineNo -= nCodeLines; + + // TODO: refactor to use new CodeMirror version + pyTestInputCodeMirror.focus(); + pyTestInputCodeMirror.setCursor(errorLineNo, 0); + pyTestInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); + + pyTestInputCodeMirror.setOption('onChange', function() { + pyTestInputCodeMirror.setLineClass(errorLineNo, null, null); + pyTestInputCodeMirror.setOption('onChange', null); // cancel + }); + } + } + + $('#executeBtn').html(VIZ_LABEL); + $('#executeBtn').attr('disabled', false); + } + } + + executePythonCode(allCod, + backend_script, backendOptionsObj, + frontendOptionsObj, + 'pyOutputPane', + enterDisplayMode, handleUncaughtExceptionFunc); + } + + function executeCodeFromScratch() { + var inputCod = pyInputCodeMirror.getValue(); + var testCod = pyTestInputCodeMirror.getValue(); + + // don't execute empty string: + if (($.trim(inputCod) == '') && ($.trim(testCod) == '')) { + alert('Type in some code to visualize.'); + return; + } + + executeCode(inputCod, testCod); + } + + $("#executeBtn").attr('disabled', false); + $("#executeBtn").click(executeCodeFromScratch); + + + var queryStrOptions = getQueryStringOptions(); + + appMode = queryStrOptions.appMode; // assign this to the GLOBAL appMode + if ((appMode == "display") && queryStrOptions.preseededCode /* jump to display only with pre-seeded code */) { + preseededCurInstr = queryStrOptions.preseededCurInstr; // ugly global + $("#executeBtn").trigger('click'); + } + else { + if (appMode === undefined) { + // default mode is 'edit', don't trigger a "hashchange" event + appMode = 'edit'; + } + else { + // fail-soft by killing all passed-in hashes and triggering a "hashchange" + // event, which will then go to 'edit' mode + $.bbq.removeState(); + } + } + + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Server error (possibly due to memory/resource overload). " + + "Report a bug to philip@pgbovine.net\n\n" + + "(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); + + $('#executeBtn').html(VIZ_LABEL); + $('#executeBtn').attr('disabled', false); + }); + + + // redraw connector arrows on window resize + $(window).resize(function() { + if (appMode == 'display') { + myVisualizer.redrawConnectors(); + } + }); + + if (problemName) { + $.get('load_matrix_problem.py', + {problem_name: problemName}, + function(dataFromBackend) { + if (dataFromBackend.status == 'error') { + alert("Error: " + problemName + " is not a valid problem name"); + } + else { + pyInputCodeMirror.setValue(dataFromBackend.code.rtrim()); + pyTestInputCodeMirror.setValue(dataFromBackend.test.rtrim()); + $(".problemDescClass").html(dataFromBackend.description); + } + }, + "json"); + + $('#submitGradeBtn').bind('click', function() { + $('#submitGradeBtn').html('Now Grading ...'); + $('#submitGradeBtn').attr('disabled', true); + + $.get('submit_matrix_problem.py', + {submitted_code: pyInputCodeMirror.getValue(), + problem_name: problemName}, + function(dataFromBackend) { + $('#gradeStdout').val(dataFromBackend.user_stdout); + + $('#submitGradeBtn').html('Submit for Grading'); + $('#submitGradeBtn').attr('disabled', false); + }, + "json"); + }); + } +}); diff --git a/v3/js/opt-frontend-common.js b/v3/js/opt-frontend-common.js new file mode 100644 index 000000000..07a1fa954 --- /dev/null +++ b/v3/js/opt-frontend-common.js @@ -0,0 +1,1570 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +// include this file BEFORE any OPT frontend file + + +// backend scripts to execute (Python 2 and 3 variants, if available) +// make two copies of ../web_exec.py and give them the following names, +// then change the first line (starting with #!) to the proper version +// of the Python interpreter (i.e., Python 2 or Python 3). +// Note that your hosting provider might have stringent rules for what +// kind of scripts are allowed to execute. For instance, my provider +// (Webfaction) seems to let scripts execute only if permissions are +// something like: +// -rwxr-xr-x 1 pgbovine pgbovine 2.5K Jul 5 22:46 web_exec_py2.py* +// (most notably, only the owner of the file should have write +// permissions) +//var python2_backend_script = 'web_exec_py2.py'; +//var python3_backend_script = 'web_exec_py3.py'; + +// uncomment below if you're running on Google App Engine using the built-in app.yaml +var python2_backend_script = 'exec'; +var python3_backend_script = 'exec'; + +// KRAZY experimental KODE!!! Use a custom hacked CPython interpreter +var python2crazy_backend_script = 'web_exec_py2-crazy.py'; +// On Google App Engine, simply run dev_appserver.py with the +// crazy custom py2crazy CPython interpreter to get 2crazy mode +//var python2crazy_backend_script = 'exec'; + + +var domain = "http://pythontutor.com/"; // for deployment +//var domain = "http://localhost:8080/"; // for Google App Engine local testing + + +var isExecutingCode = false; // nasty, nasty global + + +var appMode = 'edit'; // 'edit' or 'display'. also support + // 'visualize' for backward compatibility (same as 'display') + +var pyInputCodeMirror; // CodeMirror object that contains the input code +var pyInputAceEditor; // Ace editor object that contains the input code + +var useCodeMirror = false; // true -> use CodeMirror, false -> use Ace + + +function initAceEditor(height) { + pyInputAceEditor = ace.edit('codeInputPane'); + var s = pyInputAceEditor.getSession(); + s.setMode("ace/mode/python"); + // tab -> 4 spaces + s.setTabSize(4); + s.setUseSoftTabs(true); + // disable extraneous indicators: + s.setFoldStyle('manual'); // no code folding indicators + pyInputAceEditor.setHighlightActiveLine(false); + pyInputAceEditor.setShowPrintMargin(false); + pyInputAceEditor.setBehavioursEnabled(false); + + $('#codeInputPane').css('width', '700px'); + $('#codeInputPane').css('height', height + 'px'); +} + + +// BEGIN - shared session stuff + +// grab this as early as possible before TogetherJS munges the URL +var togetherjsInUrl = ($.bbq.getState('togetherjs') !== undefined); + +//var TogetherJSConfig_hubBase = "http://184.173.101.176:30035/"; // online +var TogetherJSConfig_hubBase = "http://localhost:30035/"; // local + +// TogetherJS common configuration +var TogetherJSConfig_disableWebRTC = true; +var TogetherJSConfig_suppressJoinConfirmation = true; +var TogetherJSConfig_dontShowClicks = false; + +// stop popping up boring intro dialog box: +var TogetherJSConfig_seenIntroDialog = true; + +// suppress annoying pop-ups: +var TogetherJSConfig_suppressInvite = true; +var TogetherJSConfig_suppressJoinConfirmation = true; + +// clone clicks ONLY in certain elements to keep things simple: +var TogetherJSConfig_cloneClicks = '#pyInputPane select'; + +var TogetherJSConfig_siteName = "Online Python Tutor shared session"; +var TogetherJSConfig_toolName = "Online Python Tutor shared session"; + +// more nasty global state vars +var updateOutputSignalFromRemote = false; +var executeCodeSignalFromRemote = false; +var togetherjsSyncRequested = false; +var pendingCodeOutputScrollTop = null; + +TogetherJSConfig_ignoreForms = ['.togetherjsIgnore']; // do NOT sync these elements + + +function requestSync() { + if (TogetherJS.running) { + togetherjsSyncRequested = true; + TogetherJS.send({type: "requestSync"}); + } +} + +function syncAppState(appState) { + setToggleOptions(appState); + + // VERY VERY subtle -- temporarily prevent TogetherJS from sending + // form update events while we set the code mirror value. otherwise + // this will send an incorrect delta to the other end and screw things + // up because the initial states of the two forms aren't equal. + if (useCodeMirror) { + var orig = TogetherJS.config.get('ignoreForms'); + TogetherJS.config('ignoreForms', true); + pyInputSetValue(appState.code); + TogetherJS.config('ignoreForms', orig); + } + + if (appState.rawInputLst) { + rawInputLst = $.parseJSON(appState.rawInputLstJSON); + } + else { + rawInputLst = []; + } +} + + +// get OPT ready for integration with TogetherJS +function initTogetherJS() { + if (togetherjsInUrl) { + $("#sharedSessionBtn").hide(); // hide ASAP! + $("#togetherjsStatus").html("Please wait ... loading shared session"); + } + + + // clear your name from the cache every time to prevent privacy leaks + if (supports_html5_storage()) { + localStorage.removeItem('togetherjs.settings.name'); + } + + + // This event triggers when you first join a session and say 'hello', + // and then one of your peers says hello back to you. If they have the + // exact same name as you, then change your own name to avoid ambiguity. + // Remember, they were here first (that's why they're saying 'hello-back'), + // so they keep their own name, but you need to change yours :) + TogetherJS.hub.on("togetherjs.hello-back", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + var p = TogetherJS.require("peers"); + + var peerNames = p.getAllPeers().map(function(e) {return e.name}); + + if (msg.name == p.Self.name) { + var newName = undefined; + var toks = msg.name.split(' '); + var count = Number(toks[1]); + + // make sure the name is truly unique, incrementing count as necessary + do { + if (!isNaN(count)) { + newName = toks[0] + ' ' + String(count + 1); // e.g., "Tutor 3" + count++; + } + else { + // the original name was something like "Tutor", so make + // newName into, say, "Tutor 2" + newName = p.Self.name + ' 2'; + count = 2; + } + } while ($.inArray(newName, peerNames) >= 0); // i.e., is newName in peerNames? + + p.Self.update({name: newName}); // change our own name + } + }); + + // Global hook for ExecutionVisualizer. + // Set it here after TogetherJS gets defined, hopefully! + try_hook = function(hook_name, args) { + if (hook_name == "end_updateOutput") { + if (updateOutputSignalFromRemote) { + return; + } + if (TogetherJS.running && !isExecutingCode) { + TogetherJS.send({type: "updateOutput", step: args.myViz.curInstr}); + } + + // 2014-05-25: implemented more detailed tracing for surveys + if (args.myViz.creationTime) { + var deltaMs = (new Date()) - args.myViz.creationTime; + + var uh = args.myViz.updateHistory; + assert(uh.length > 0); // should already be seeded with an initial value + var lastDeltaMs = uh[uh.length - 1][1]; + + // ("debounce" entries that are less than 1 second apart to + // compress the logs a bit when there's rapid scrubbing or scrolling) + if ((deltaMs - lastDeltaMs) < 1000) { + uh.pop(); // get rid of last entry before pushing a new entry + } + uh.push([args.myViz.curInstr, deltaMs]); + //console.log(JSON.stringify(uh)); + } + } + return [false]; + } + + TogetherJS.hub.on("updateOutput", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (isExecutingCode) { + return; + } + + if (myVisualizer) { + // to prevent this call to updateOutput from firing its own TogetherJS event + updateOutputSignalFromRemote = true; + try { + myVisualizer.renderStep(msg.step); + } + finally { + updateOutputSignalFromRemote = false; + } + } + }); + + TogetherJS.hub.on("executeCode", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (isExecutingCode) { + return; + } + + executeCodeSignalFromRemote = true; + try { + executeCode(msg.forceStartingInstr, msg.rawInputLst); + } + finally { + executeCodeSignalFromRemote = false; + } + + }); + + TogetherJS.hub.on("hashchange", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (isExecutingCode) { + return; + } + + console.log("TogetherJS RECEIVE hashchange", msg.appMode); + if (msg.appMode != appMode) { + updateAppDisplay(msg.appMode); + + if (appMode == 'edit' && msg.codeInputScrollTop !== undefined && + pyInputGetScrollTop() != msg.codeInputScrollTop) { + // hack: give it a bit of time to settle first ... + $.doTimeout('pyInputCodeMirrorInit', 200, function() { + pyInputSetScrollTop(msg.codeInputScrollTop); + }); + } + } + }); + + TogetherJS.hub.on("codemirror-edit", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (!$("#codeInputWarnings").data('orig-html')) { // set only once + $("#codeInputWarnings").data('orig-html', $("#codeInputWarnings").html()); + } + + $("#codeInputWarnings").html('\ + Someone is typing ... ' + + $("#codeInputWarnings").data('orig-html')); + + $.doTimeout('codeMirrorWarningTimeout', 1000, function() { // debounce + $("#codeInputWarnings").html($("#codeInputWarnings").data('orig-html')); + }); + }); + + TogetherJS.hub.on("requestSync", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (TogetherJS.running) { + TogetherJS.send({type: "myAppState", + myAppState: getAppState(), + codeInputScrollTop: pyInputGetScrollTop(), + pyCodeOutputDivScrollTop: myVisualizer ? + myVisualizer.domRoot.find('#pyCodeOutputDiv').scrollTop() : + undefined}); + } + }); + + TogetherJS.hub.on("myAppState", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + // if we didn't explicitly request a sync, then don't do anything + if (!togetherjsSyncRequested) { + return; + } + + togetherjsSyncRequested = false; + + var learnerAppState = msg.myAppState; + + if (learnerAppState.mode == 'display') { + if (appStateEq(getAppState(), learnerAppState)) { + // update curInstr only + console.log("on:myAppState - app states equal, renderStep", learnerAppState.curInstr); + myVisualizer.renderStep(learnerAppState.curInstr); + + if (msg.pyCodeOutputDivScrollTop !== undefined) { + myVisualizer.domRoot.find('#pyCodeOutputDiv').scrollTop(msg.pyCodeOutputDivScrollTop); + } + } + else if (!isExecutingCode) { // if already executing from a prior signal, ignore + console.log("on:myAppState - app states unequal, executing", learnerAppState); + syncAppState(learnerAppState); + + executeCodeSignalFromRemote = true; + try { + if (msg.pyCodeOutputDivScrollTop !== undefined) { + pendingCodeOutputScrollTop = msg.pyCodeOutputDivScrollTop; // NASTY global + } + executeCode(learnerAppState.curInstr); + } + finally { + executeCodeSignalFromRemote = false; + } + } + } + else { + assert(learnerAppState.mode == 'edit'); + if (!appStateEq(getAppState(), learnerAppState)) { + console.log("on:myAppState - edit mode sync"); + syncAppState(learnerAppState); + enterEditMode(); + } + } + + if (msg.codeInputScrollTop !== undefined) { + // give pyInputCodeMirror/pyInputAceEditor a bit of time to settle with + // its new value. this is hacky; ideally we have a callback function for + // when setValue() completes. + $.doTimeout('pyInputCodeMirrorInit', 200, function() { + pyInputSetScrollTop(msg.codeInputScrollTop); + }); + } + }); + + TogetherJS.hub.on("codeInputScroll", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + if (useCodeMirror) { + pyInputSetScrollTop(msg.scrollTop); + } + else { + // don't sync for Ace since I can't get it working properly yet + } + }); + + TogetherJS.hub.on("pyCodeOutputDivScroll", function(msg) { + // do NOT use a msg.sameUrl guard since that will miss some signals + // due to our funky URLs + + if (myVisualizer) { + myVisualizer.domRoot.find('#pyCodeOutputDiv').scrollTop(msg.scrollTop); + } + }); + + $("#sharedSessionBtn").click(startSharedSession); + $("#stopTogetherJSBtn").click(TogetherJS); // toggles off + + // fired when TogetherJS is activated. might fire on page load if there's + // already an open session from a prior page load in the recent past. + TogetherJS.on("ready", function () { + console.log("TogetherJS ready"); + + $("#sharedSessionDisplayDiv").show(); + $("#sharedSessionBtn").hide(); + + // send this to the server for the purposes of logging, but other + // clients shouldn't do anything with this data + if (TogetherJS.running) { + TogetherJS.send({type: "initialAppState", + myAppState: getAppState(), + // so that you can tell whether someone else + // shared a TogetherJS URL with you to invite you + // into this shared session: + togetherjsInUrl: togetherjsInUrl}); + } + + requestSync(); // immediately try to sync upon startup so that if + // others are already in the session, we will be + // synced up. and if nobody is here, then this is a NOP. + + TogetherjsReadyHandler(); // needs to be defined in each frontend + redrawConnectors(); // update all arrows at the end + }); + + // emitted when TogetherJS is closed. This is not emitted when the + // webpage simply closes or navigates elsewhere, ONLY when TogetherJS + // is explicitly stopped via a call to TogetherJS() + TogetherJS.on("close", function () { + console.log("TogetherJS close"); + + $("#togetherjsStatus").html(''); // clear it + $("#sharedSessionDisplayDiv").hide(); + $("#sharedSessionBtn").show(); + + TogetherjsCloseHandler(); // needs to be defined in each frontend + redrawConnectors(); // update all arrows at the end + }); +} + +function TogetherjsReadyHandler() { + alert("ERROR: need to override TogetherjsReadyHandler()"); +} + +function TogetherjsCloseHandler() { + alert("ERROR: need to override TogetherjsCloseHandler()"); +} + +function startSharedSession() { + $("#sharedSessionBtn").hide(); // hide ASAP! + $("#togetherjsStatus").html("Please wait ... loading shared session"); + TogetherJS(); +} + +function populateTogetherJsShareUrl() { + // without anything after the '#' in the hash + var cleanUrl = $.param.fragment(location.href, {}, 2 /* override */); + var urlToShare = cleanUrl + 'togetherjs=' + TogetherJS.shareId(); + $("#togetherjsStatus").html('
      \ + Copy and send this URL to let someone (e.g., a tutor or friend) join your session:\ +
      \ + \ + \ + '); + $("#togetherjsURL").val(urlToShare).attr('size', urlToShare.length + 20); + $("#syncBtn").click(requestSync); + + // append post shared session survey + $("#togetherjsStatus").append(postSessionSurvey); + $('.star-rating :radio').change(function() { + if (TogetherJS.running) { + TogetherJS.send({type: "surveyHowUsefulStars", + stars: Number(this.value)}); + } + }); + + $('#submitSessionSurveyBtn').click(function() { + var resp = $('#sharedSessionWhatLearned').val(); + if (TogetherJS.running && resp) { + TogetherJS.send({type: "surveyFreetextQuestion", + question: "What did you just learn?", + answer: $('#sharedSessionWhatLearned').val()}); + + $("#sharedSessionWhatLearned").val(''); + $("#sharedSessionWhatLearnedThanks").show(); + $.doTimeout('sharedSessionWhatLearnedThanksFadeOut', 1000, function() { + $("#sharedSessionWhatLearnedThanks").fadeOut(2000); + }); + } + }); +} + +// END - shared session stuff + + +// Global hook for ExecutionVisualizer. +var try_hook = function(hook_name, args) { + return [false]; // just a stub +} + +var myVisualizer = null; // singleton ExecutionVisualizer instance + +var rawInputLst = []; // a list of strings inputted by the user in response to raw_input or mouse_input events + + +// each frontend must implement its own executeCode function +function executeCode() { + alert("Configuration error. Need to override executeCode(). This is an empty stub."); +} + +function redrawConnectors() { + if (appMode == 'display' || appMode == 'visualize' /* deprecated */) { + if (myVisualizer) { + myVisualizer.redrawConnectors(); + } + } +} + +function setFronendError(lines) { + $("#frontendErrorOutput").html(lines.map(htmlspecialchars).join('
      ')); + $("#frontendErrorOutput").show(); +} + +function clearFrontendError() { + $("#frontendErrorOutput").hide(); +} + + +// From http://diveintohtml5.info/storage.html +function supports_html5_storage() { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } +} + +// abstraction so that we can use either CodeMirror or Ace as our code editor +function pyInputGetValue() { + if (useCodeMirror) { + return pyInputCodeMirror.getValue(); + } + else { + return pyInputAceEditor.getValue(); + } +} + +function pyInputSetValue(dat) { + if (useCodeMirror) { + pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); + } + else { + pyInputAceEditor.setValue(dat.rtrim() /* kill trailing spaces */, + -1 /* do NOT select after setting text */); + } + + $('#urlOutput,#embedCodeOutput').val(''); + + clearFrontendError(); + + // also scroll to top to make the UI more usable on smaller monitors + $(document).scrollTop(0); +} + + +var codeMirrorScroller = '#codeInputPane .CodeMirror-scroll'; + +function pyInputGetScrollTop() { + if (useCodeMirror) { + return $(codeMirrorScroller).scrollTop(); + } + else { + return pyInputAceEditor.getSession().getScrollTop(); + } +} + +function pyInputSetScrollTop(st) { + if (useCodeMirror) { + $(codeMirrorScroller).scrollTop(st); + } + else { + pyInputAceEditor.getSession().setScrollTop(st); + } +} + + +// run at the END so that everything else can be initialized first +function genericOptFrontendReady() { + initTogetherJS(); // initialize early + + + // be friendly to the browser's forward and back buttons + // thanks to http://benalman.com/projects/jquery-bbq-plugin/ + $(window).bind("hashchange", function(e) { + // if you've got some preseeded code, then parse the entire query + // string from scratch just like a page reload + if ($.bbq.getState('code')) { + parseQueryString(); + } + // otherwise just do an incremental update + else { + var newMode = $.bbq.getState('mode'); + console.log('hashchange:', newMode, window.location.hash); + updateAppDisplay(newMode); + } + + if (TogetherJS.running && !isExecutingCode) { + TogetherJS.send({type: "hashchange", + appMode: appMode, + codeInputScrollTop: pyInputGetScrollTop(), + myAppState: getAppState()}); + } + }); + + + if (useCodeMirror) { + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 4, + indentUnit: 4, + // convert tab into four spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + }); + + pyInputCodeMirror.setSize(null, '420px'); + } + else { + initAceEditor(420); + } + + + if (useCodeMirror) { + // for shared sessions + pyInputCodeMirror.on("change", function(cm, change) { + // only trigger when the user explicitly typed something + if (change.origin != 'setValue') { + if (TogetherJS.running) { + TogetherJS.send({type: "codemirror-edit"}); + } + } + }); + } + else { + pyInputAceEditor.getSession().on("change", function(e) { + // unfortunately, Ace doesn't detect whether a change was caused + // by a setValue call + if (TogetherJS.running) { + TogetherJS.send({type: "codemirror-edit"}); + } + }); + } + + + if (useCodeMirror) { + $(codeMirrorScroller).scroll(function(e) { + if (TogetherJS.running) { + var elt = $(this); + $.doTimeout('codeInputScroll', 100, function() { // debounce + // note that this will send a signal back and forth both ways + // (there's no easy way to prevent this), but it shouldn't keep + // bouncing back and forth indefinitely since no the second signal + // causes no additional scrolling + TogetherJS.send({type: "codeInputScroll", + scrollTop: elt.scrollTop()}); + }); + } + }); + } + else { + // don't sync for Ace since I can't get it working properly yet + /* + pyInputAceEditor.getSession().on('changeScrollTop', function() { + if (TogetherJS.running) { + $.doTimeout('codeInputScroll', 100, function() { // debounce + // note that this will send a signal back and forth both ways + // (there's no easy way to prevent this), but it shouldn't keep + // bouncing back and forth indefinitely since no the second signal + // causes no additional scrolling + TogetherJS.send({type: "codeInputScroll", + scrollTop: pyInputGetScrollTop()}); + }); + } + }); + */ + } + + + // first initialize options from HTML LocalStorage. very important + // that this code runs first so that options get overridden by query + // string options and anything else the user wants to override with. + if (supports_html5_storage()) { + var lsKeys = ['cumulative', + 'drawParentPointers', + 'heapPrimitives', + 'py', + 'showOnlyOutputs', + 'textReferences']; + // restore toggleState if available + var lsOptions = {}; + $.each(lsKeys, function(i, k) { + var v = localStorage.getItem(k); + if (v) { + lsOptions[k] = v; + } + }); + setToggleOptions(lsOptions); + + // store in localStorage whenever user explicitly changes any toggle option: + $('#cumulativeModeSelector,#heapPrimitivesSelector,#drawParentPointerSelector,#textualMemoryLabelsSelector,#showOnlyOutputsSelector,#pythonVersionSelector').change(function() { + var ts = getToggleState(); + $.each(ts, function(k, v) { + localStorage.setItem(k, v); + }); + }); + } + + parseQueryString(); + + $(window).resize(redrawConnectors); + + $('#genUrlBtn').bind('click', function() { + var myArgs = getAppState(); + var urlStr = $.param.fragment(window.location.href, myArgs, 2 /* clobber all */); + $('#urlOutput').val(urlStr); + }); + + + // register a generic AJAX error handler + $(document).ajaxError(function(evt, jqxhr, settings, exception) { + // ignore errors related to togetherjs stuff: + if (settings.url.indexOf('togetherjs') > -1) { + return; // get out early + } + + // ugh other idiosyncratic stuff + if (settings.url.indexOf('name_lookup.py') > -1) { + return; // get out early + } + + setFronendError(["Server error! Your code might be too long to properly visualize (e.g., over 100 lines),", + "so try again with a smaller piece of code.", + "Or report a bug to philip@pgbovine.net by clicking on the 'Generate URL'", + "button at the bottom and including a URL in your email."]); + + doneExecutingCode(); + }); + + clearFrontendError(); + + $("#embedLinkDiv").hide(); + $("#executeBtn").attr('disabled', false); + $("#executeBtn").click(executeCodeFromScratch); + + // for Versions 1 and 2, initialize here. But for version 3+, dynamically + // generate a survey whenever the user successfully executes a piece of code + //initializeDisplayModeSurvey(); +} + + +// sets globals such as rawInputLst, CodeMirror input box, and toggle options +function parseQueryString() { + var queryStrOptions = getQueryStringOptions(); + setToggleOptions(queryStrOptions); + if (queryStrOptions.preseededCode) { + pyInputSetValue(queryStrOptions.preseededCode); + } + if (queryStrOptions.rawInputLst) { + rawInputLst = queryStrOptions.rawInputLst; // global + } + else { + rawInputLst = []; + } + + // ugh tricky -- always start in edit mode by default, and then + // switch to display mode only after the code successfully executes + appMode = 'edit'; + if ((queryStrOptions.appMode == 'display' || + queryStrOptions.appMode == 'visualize' /* 'visualize' is deprecated */) && + queryStrOptions.preseededCode /* jump to display only with pre-seeded code */) { + executeCode(queryStrOptions.preseededCurInstr); // will switch to 'display' mode + } + $.bbq.removeState(); // clean up the URL no matter what +} + +// parsing the URL query string hash +function getQueryStringOptions() { + var ril = $.bbq.getState('rawInputLstJSON'); + // note that any of these can be 'undefined' + return {preseededCode: $.bbq.getState('code'), + preseededCurInstr: Number($.bbq.getState('curInstr')), + verticalStack: $.bbq.getState('verticalStack'), + appMode: $.bbq.getState('mode'), + py: $.bbq.getState('py'), + cumulative: $.bbq.getState('cumulative'), + heapPrimitives: $.bbq.getState('heapPrimitives'), + drawParentPointers: $.bbq.getState('drawParentPointers'), + textReferences: $.bbq.getState('textReferences'), + showOnlyOutputs: $.bbq.getState('showOnlyOutputs'), + rawInputLst: ril ? $.parseJSON(ril) : undefined + }; +} + +function setToggleOptions(dat) { + // ugh, ugly tristate due to the possibility of each being undefined + if (dat.py !== undefined) { + $('#pythonVersionSelector').val(dat.py); + } + if (dat.cumulative !== undefined) { + $('#cumulativeModeSelector').val(dat.cumulative); + } + if (dat.heapPrimitives !== undefined) { + $('#heapPrimitivesSelector').val(dat.heapPrimitives); + } + if (dat.drawParentPointers !== undefined) { + $('#drawParentPointerSelector').val(dat.drawParentPointers); + } + if (dat.textReferences !== undefined) { + $('#textualMemoryLabelsSelector').val(dat.textReferences); + } + if (dat.showOnlyOutputs !== undefined) { + $('#showOnlyOutputsSelector').val(dat.showOnlyOutputs); + } +} + +// get the ENTIRE current state of the app +function getAppState() { + assert(originFrontendJsFile); // global var defined in each frontend + + var ret = {code: pyInputGetValue(), + mode: appMode, + origin: originFrontendJsFile, + cumulative: $('#cumulativeModeSelector').val(), + heapPrimitives: $('#heapPrimitivesSelector').val(), + drawParentPointers: $('#drawParentPointerSelector').val(), + textReferences: $('#textualMemoryLabelsSelector').val(), + showOnlyOutputs: $('#showOnlyOutputsSelector').val(), + py: $('#pythonVersionSelector').val(), + /* ALWAYS JSON serialize rawInputLst, even if it's empty! */ + rawInputLstJSON: JSON.stringify(rawInputLst), + curInstr: myVisualizer ? myVisualizer.curInstr : undefined}; + + // keep this really clean by avoiding undefined values + if (ret.cumulative === undefined) + delete ret.cumulative; + if (ret.heapPrimitives === undefined) + delete ret.heapPrimitives; + if (ret.drawParentPointers === undefined) + delete ret.drawParentPointers; + if (ret.textReferences === undefined) + delete ret.textReferences; + if (ret.showOnlyOutputs === undefined) + delete ret.showOnlyOutputs; + if (ret.py === undefined) + delete ret.py; + if (ret.rawInputLstJSON === undefined) + delete ret.rawInputLstJSON; + if (ret.curInstr === undefined) + delete ret.curInstr; + + return ret; +} + +// return whether two states match, except don't worry about curInstr +function appStateEq(s1, s2) { + assert(s1.origin == s2.origin); // sanity check! + + return (s1.code == s2.code && + s1.mode == s2.mode && + s1.cumulative == s2.cumulative && + s1.heapPrimitives == s1.heapPrimitives && + s1.drawParentPointers == s2.drawParentPointers && + s1.textReferences == s2.textReferences && + s1.showOnlyOutputs == s2.showOnlyOutputs && + s1.py == s2.py && + s1.rawInputLstJSON == s2.rawInputLstJSON); +} + +// strip it down to the bare minimum +function getToggleState() { + var x = getAppState(); + delete x.code; + delete x.mode; + delete x.rawInputLstJSON; + delete x.curInstr; + return x; +} + +// sets the global appMode variable if relevant and also the URL hash to +// support some amount of Web browser back button goodness +function updateAppDisplay(newAppMode) { + // idempotence is VERY important here + if (newAppMode == appMode) { + return; + } + + appMode = newAppMode; // global! + + if (appMode === undefined || appMode == 'edit' || + !myVisualizer /* subtle -- if no visualizer, default to edit mode */) { + appMode = 'edit'; // canonicalize + + $("#pyInputPane").show(); + $("#pyOutputPane,#surveyHeader").hide(); + $("#embedLinkDiv").hide(); + + $(".surveyQ").val(''); // clear all survey results when user hits forward/back + + // destroy all annotation bubbles (NB: kludgy) + if (myVisualizer) { + myVisualizer.destroyAllAnnotationBubbles(); + } + + // Potentially controversial: when you enter edit mode, DESTROY any + // existing visualizer object. note that this simplifies the app's + // conceptual model but breaks the browser's expected Forward and + // Back button flow + $("#pyOutputPane").empty(); + myVisualizer = null; + + $(document).scrollTop(0); // scroll to top to make UX better on small monitors + + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); + } + else if (appMode == 'display' || appMode == 'visualize' /* 'visualize' is deprecated */) { + assert(myVisualizer); + appMode = 'display'; // canonicalize + + $("#pyInputPane").hide(); + $("#pyOutputPane").show(); + $("#embedLinkDiv").show(); + + if (typeof TogetherJS === 'undefined' || !TogetherJS.running) { + $("#surveyHeader").show(); + } + + doneExecutingCode(); + + // do this AFTER making #pyOutputPane visible, or else + // jsPlumb connectors won't render properly + myVisualizer.updateOutput(); + + // customize edit button click functionality AFTER rendering (NB: awkward!) + $('#pyOutputPane #editCodeLinkDiv').show(); + $('#pyOutputPane #editBtn').click(function() { + enterEditMode(); + }); + + $(document).scrollTop(0); // scroll to top to make UX better on small monitors + + + // NASTY global :( + if (pendingCodeOutputScrollTop) { + myVisualizer.domRoot.find('#pyCodeOutputDiv').scrollTop(pendingCodeOutputScrollTop); + pendingCodeOutputScrollTop = null; + } + + $.doTimeout('pyCodeOutputDivScroll'); // cancel any prior scheduled calls + + myVisualizer.domRoot.find('#pyCodeOutputDiv').scroll(function(e) { + var elt = $(this); + // debounce + $.doTimeout('pyCodeOutputDivScroll', 100, function() { + // note that this will send a signal back and forth both ways + if (typeof TogetherJS !== 'undefined' && TogetherJS.running) { + // (there's no easy way to prevent this), but it shouldn't keep + // bouncing back and forth indefinitely since no the second signal + // causes no additional scrolling + TogetherJS.send({type: "pyCodeOutputDivScroll", + scrollTop: elt.scrollTop()}); + } + }); + }); + + $.bbq.pushState({ mode: 'display' }, 2 /* completely override other hash strings to keep URL clean */); + } + else { + assert(false); + } + + $('#urlOutput,#embedCodeOutput').val(''); // clear to avoid stale values +} + + +function executeCodeFromScratch() { + // don't execute empty string: + if ($.trim(pyInputGetValue()) == '') { + setFronendError(["Type in some Python code to visualize."]); + return; + } + + rawInputLst = []; // reset! + executeCode(); +} + +function executeCodeWithRawInput(rawInputStr, curInstr) { + rawInputLst.push(rawInputStr); + console.log('executeCodeWithRawInput', rawInputStr, curInstr, rawInputLst); + executeCode(curInstr); +} + + +function handleUncaughtExceptionFunc(trace) { + if (trace.length == 1 && trace[0].line) { + var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (errorLineNo !== undefined && errorLineNo != NaN) { + // highlight the faulting line + if (useCodeMirror) { + pyInputCodeMirror.focus(); + pyInputCodeMirror.setCursor(errorLineNo, 0); + pyInputCodeMirror.addLineClass(errorLineNo, null, 'errorLine'); + + function f() { + pyInputCodeMirror.removeLineClass(errorLineNo, null, 'errorLine'); // reset line back to normal + pyInputCodeMirror.off('change', f); + } + pyInputCodeMirror.on('change', f); + } + else { + var s = pyInputAceEditor.getSession(); + s.setAnnotations([{row: errorLineNo, + type: 'error', + text: trace[0].exception_msg}]); + pyInputAceEditor.gotoLine(errorLineNo + 1 /* one-indexed */); + } + } + } +} + +function startExecutingCode() { + $('#executeBtn').html("Please wait ... processing your code"); + $('#executeBtn').attr('disabled', true); + isExecutingCode = true; // nasty global +} + +function doneExecutingCode() { + $('#executeBtn').html("Visualize Execution"); + $('#executeBtn').attr('disabled', false); + isExecutingCode = false; // nasty global +} + + +function enterDisplayMode() { + updateAppDisplay('display'); +} + +function enterEditMode() { + updateAppDisplay('edit'); +} + + +function optFinishSuccessfulExecution() { + enterDisplayMode(); // do this first! + + // 2014-05-25: implemented more detailed tracing for surveys + myVisualizer.creationTime = new Date(); + // each element will be a two-element list consisting of: + // [step number, milliseconds elapsed since creationTime] + // ("debounce" entries that are less than 1 second apart to + // compress the logs a bit when there's rapid scrubbing or scrolling) + myVisualizer.updateHistory = []; + myVisualizer.updateHistory.push([myVisualizer.curInstr, 0]); // seed it! + + // For version 3+, dynamically generate a survey whenever the user + // successfully executes a piece of code + initializeDisplayModeSurvey(); +} + + +// TODO: cut reliance on the nasty rawInputLst global +function executePythonCode(pythonSourceCode, + backendScript, backendOptionsObj, + frontendOptionsObj, + outputDiv, + handleSuccessFunc, handleUncaughtExceptionFunc) { + if (!backendScript) { + setFronendError(["Server configuration error: No backend script", + "Report a bug to philip@pgbovine.net by clicking on the 'Generate URL'", + "button at the bottom and including a URL in your email."]); + return; + } + + if (typeof TogetherJS !== 'undefined' && + TogetherJS.running && !executeCodeSignalFromRemote) { + TogetherJS.send({type: "executeCode", + myAppState: getAppState(), + forceStartingInstr: frontendOptionsObj.startingInstruction, + rawInputLst: rawInputLst}); + } + + // if you're in display mode, kick back into edit mode before + // executing or else the display might not refresh properly ... ugh + // krufty FIXME + enterEditMode(); + + clearFrontendError(); + startExecutingCode(); + + $.get(backendScript, + {user_script : pythonSourceCode, + raw_input_json: rawInputLst.length > 0 ? JSON.stringify(rawInputLst) : '', + options_json: JSON.stringify(backendOptionsObj)}, + function(dataFromBackend) { + var trace = dataFromBackend.trace; + + // don't enter visualize mode if there are killer errors: + if (!trace || + (trace.length == 0) || + (trace[trace.length - 1].event == 'uncaught_exception')) { + + handleUncaughtExceptionFunc(trace); + + if (trace.length == 1) { + setFronendError([trace[0].exception_msg]); + } + else if (trace[trace.length - 1].exception_msg) { + setFronendError([trace[trace.length - 1].exception_msg]); + } + else { + setFronendError(["Unknown error. Reload the page and try again.", + "Report a bug to philip@pgbovine.net by clicking on the 'Generate URL'", + "button at the bottom and including a URL in your email."]); + } + } + else { + // fail-soft to prevent running off of the end of trace + if (frontendOptionsObj.startingInstruction >= trace.length) { + frontendOptionsObj.startingInstruction = 0; + } + + if (frontendOptionsObj.holisticMode) { + // do NOT override, or else bad things will happen with + // jsPlumb arrows interfering ... + delete frontendOptionsObj.visualizerIdOverride; + + myVisualizer = new HolisticVisualizer(outputDiv, dataFromBackend, frontendOptionsObj); + } else { + myVisualizer = new ExecutionVisualizer(outputDiv, dataFromBackend, frontendOptionsObj); + } + // SUPER HACK -- slip in backendOptionsObj as an extra field + myVisualizer.backendOptionsObj = backendOptionsObj; + + handleSuccessFunc(); + + // VERY SUBTLE -- reinitialize TogetherJS so that it can detect + // and sync any new elements that are now inside myVisualizer + if (typeof TogetherJS !== 'undefined' && TogetherJS.running) { + TogetherJS.reinitialize(); + } + } + + doneExecutingCode(); // rain or shine, we're done executing! + // run this at the VERY END after all the dust has settled + }, + "json"); +} + + +/* For survey questions: + +Versions of survey wording: + +v1: (deployed around 2014-04-09, revoked on 2014-06-20) + +var survey_v1 = '\n\ +

      \n\ +[Optional] Please answer these questions to support our research and to help improve this tool.
      \n\ +Where is your code from?
      \n\ +What do you hope to learn by visualizing it?
      \n\ +How did you find this web site? \n\ + \n\ +

      ' + +v2: (deployed on 2014-06-20, revoked on 2014-06-28) + +var survey_v2 = '\n\ +

      \n\ +[Optional] Please answer these questions to support our research and to help improve this tool.
      \n\ +What do you hope to learn by visualizing this code?
      \n\ +Paste a website link to a course that uses Python:
      \n\ +(This could be a course that you\'re taking or teaching in school, or that you\'ve taken or taught in the past.)\n\ + \n\ +

      ' + +v3: (deployed on 2014-06-28, revoked on 2014-07-13) [it's a simplified version of v1] +var survey_v3 = '\n\ +

      \n\ +[Optional] Please answer these questions to support our research and to help improve this tool.
      \n\ +Where is your code from?
      \n\ +What do you hope to learn by visualizing it?
      \n\ + \n\ +

      ' + +v4: (deployed on 2014-07-13) +[an even more simplified version of v1 just to focus on ONE important question] +*/ +var survey_v4 = '\n\ +

      \n\ +[Optional] What do you hope to learn by visualizing this code?
      \n\ +
      \n\ + \n\ +

      ' + +var survey_html = survey_v4; + +function setSurveyHTML() { + $('#surveyPane').html(survey_html); +} + +function getSurveyObject() { + /* v1 + var code_origin_Q_val = $('#code-origin-Q').val(); + var what_learn_Q_val = $('#what-learn-Q').val(); + var how_find_Q_val = $('#how-find-Q').val(); + + var ret = null; + + if (code_origin_Q_val || what_learn_Q_val || how_find_Q_val) { + ret = { + ver: $('#Q-version').val(), + code_origin_Q: code_origin_Q_val, + what_learn_Q: what_learn_Q_val, + how_find_Q: how_find_Q_val, + } + } + */ + + /* v2 + var what_learn_Q_val = $('#what-learn-Q').val(); + var course_website_Q_val = $('#course-website-Q').val(); + + var ret = null; + + if (what_learn_Q_val || course_website_Q_val) { + ret = { + ver: $('#Q-version').val(), + what_learn_Q: what_learn_Q_val, + course_website_Q: course_website_Q_val, + } + } + */ + + /* v3 + var code_origin_Q_val = $('#code-origin-Q').val(); + var what_learn_Q_val = $('#what-learn-Q').val(); + + var ret = null; + + if (code_origin_Q_val || what_learn_Q_val) { + ret = { + ver: $('#Q-version').val(), + code_origin_Q: code_origin_Q_val, + what_learn_Q: what_learn_Q_val, + } + } + */ + + /* v4 */ + var ret = { + ver: $('#Q-version').val(), + } + + var what_learn_Q_val = $('#what-learn-Q').val(); + if ($.trim(what_learn_Q_val)) { + ret.what_learn_Q = what_learn_Q_val; + ret.testing_group = 'c'; // special group for users who have filled out this + // execution-time survey + } else { + // assign to 'a' or 'b' group for A/B testing: + var grp = 'ERROR'; // default error sentinel + + // if we have localStorage, then get/set a testing_group field to ensure + // some consistency across different sessions from the same user. + // of course, this isn't foolproof by any means, but it's a start + if (supports_html5_storage()) { + var saved_grp = localStorage.getItem('testing_group'); + if (saved_grp) { + grp = saved_grp; + } else { + grp = (Math.random() < 0.5) ? 'a' : 'b'; + localStorage.setItem('testing_group', grp); + } + } else { + grp = (Math.random() < 0.5) ? 'a' : 'b'; + } + + ret.testing_group = grp; + } + + return ret; +} + + +// survey for shared sessions, deployed on 2014-06-06 +var postSessionSurvey = '\n\ +
      \n\ +Support our research by giving anonymous feedback before ending your session.
      \n\ +How useful was this particular session? (click star to rate)\n\ +\n\ + \n\ + \n\ + \n\ + \n\ + \n\ +\n\ +
      \ +What did you just learn? \n\ +\n\ +\n\ +
      ' + + +// display-mode survey, which is shown when the user is in 'display' mode +// As of Version 3, this runs every time code is executed, so make sure event +// handlers don't unnecessarily stack up +function initializeDisplayModeSurvey() { + /* Version 1 - started experiment on 2014-04-09, put on hold on 2014-05-02 + +Hard-coded HTML in surveyHeader: + + + +[when any button is clicked a pop-up modal prompt tells the user to type +in some details elaborating on what they just clicked] + + $('.surveyBtn').click(function(e) { + // wow, massive copy-and-paste action from above! + var myArgs = getAppState(); + + var buttonPrompt = $(this).html(); + var res = prompt('"' + buttonPrompt + '"' + '\nPlease elaborate if you can and hit OK to submit:'); + // don't do ajax call when Cancel button is pressed + // (note that if OK button is pressed with no response, then an + // empty string will still be sent to the server + if (res !== null) { + myArgs.surveyQuestion = buttonPrompt; + myArgs.surveyResponse = res; + $.get('survey.py', myArgs, function(dat) {}); + } + }); + + */ + + /* Version 2 - greatly simplified and deployed on 2014-05-24, revoked on 2014-07-13 + +Hard-coded HTML in surveyHeader: + + + +[when the user clicks the "Submit" button, send results to survey.py and +display a brief "Thanks!" note] + + $('#iJustLearnedSubmission').click(function(e) { + var resp = $("#iJustLearnedInput").val(); + + if (!$.trim(resp)) { + return; + } + + // wow, massive copy-and-paste action from above! + var myArgs = getAppState(); + + // myArgs.surveyQuestion = "I just learned that ..."; // retired on 2014-06-04 + myArgs.surveyQuestion = "What did you just learn?"; + myArgs.surveyResponse = resp; + myArgs.surveyVersion = 'v2'; + + // 2014-05-25: implemented more detailed tracing for surveys + if (myVisualizer) { + myArgs.updateHistoryJSON = JSON.stringify(myVisualizer.updateHistory); + } + + $.get('survey.py', myArgs, function(dat) {}); + + $("#iJustLearnedInput").val(''); + $("#iJustLearnedThanks").show(); + $.doTimeout('iJustLearnedThanksFadeOut', 1200, function() { + $("#iJustLearnedThanks").fadeOut(1000); + }); + }); + + */ + + /* Version 3 - deployed on 2014-07-13 + + Display one of 3 display-mode surveys, depending on the contents of + myVisualizer.backendOptionsObj.survey.testing_group + + 'a' / 'b' -- A/B testing of two kinds of surveys + + 'c' -- if the user has filled in an answer to 'What do you hope to + learn by visualizing this code?' when hitting "Visualize Execution", + then echo that phrase back to them and display a custom survey + + */ + if (!myVisualizer || !myVisualizer.backendOptionsObj.survey) { + return; + } + + var surveyObj = myVisualizer.backendOptionsObj.survey; + + var display_mode_survey_v3a = '\n\ +
      \n\ + Support our research by clicking a button whenever you learn something.
      \n\ +
      \n\ +
      \n\ + \n\ + \n\ + \n\ +
      \n\ +
      \n'; + + var display_mode_survey_v3b = '\n\ +
      \n\ + Support our research and help future learners by describing what you are learning.\n\ +
      \n\ +
      \n\ + What did you just learn?\n\ + \n\ + \n\ + \n\ +
      '; + + var display_mode_survey_v3c = '\n\ +
      \n\ + Support our research by clicking a button whenever you learn something.
      \n\ +
      \n\ +
      \n\ + You hoped to learn:\n\ + ""
      \n\ + \n\ + \n\ +
      \n\ +
      \n'; + + var testingGroup = surveyObj.testing_group; + + var display_mode_survey_HTML = ''; + if (testingGroup == 'a') { + display_mode_survey_HTML = display_mode_survey_v3a; + } else if (testingGroup == 'b') { + display_mode_survey_HTML = display_mode_survey_v3b; + } else if (testingGroup == 'c') { + display_mode_survey_HTML = display_mode_survey_v3c; + } else { + assert(false); + } + + $("#surveyHeader").html(display_mode_survey_HTML); + + $("#vizSurveyLabel").css('font-size', '8pt') + .css('color', '#666') + .css('margin-bottom', '5pt'); + $(".surveyBtn").css('margin-right', '6px'); + + if (testingGroup == 'c') { + $("#userHopeLearn").html(htmlspecialchars(surveyObj.what_learn_Q)); + } + + + // testingGroup == 'a' || testingGroup == 'c' + // use unbind first so that this function is idempotent + $('.surveyBtn').unbind().click(function(e) { + var buttonPrompt = $(this).html(); + var res = prompt('You said, "' + buttonPrompt + '"' + '\nPlease describe what you just learned:'); + + if (!$.trim(res)) { + return; + } + + var myArgs = getAppState(); + myArgs.surveyQuestion = buttonPrompt; + myArgs.surveyResponse = res; + myArgs.surveyVersion = 'v3'; + myArgs.testing_group = testingGroup; // use underscore for consistency + + myArgs.updateHistoryJSON = JSON.stringify(myVisualizer.updateHistory); + + if (surveyObj.what_learn_Q) { + myArgs.what_learn_Q = surveyObj.what_learn_Q; + } + + $.get('survey.py', myArgs, function(dat) {}); + }); + + // testingGroup == 'b' + // use unbind first so that this function is idempotent + $('#iJustLearnedSubmission').unbind().click(function(e) { + var resp = $("#iJustLearnedInput").val(); + + if (!$.trim(resp)) { + return; + } + + var myArgs = getAppState(); + myArgs.surveyQuestion = "What did you just learn?"; + myArgs.surveyResponse = resp; + myArgs.surveyVersion = 'v3'; + myArgs.testing_group = testingGroup; // use underscore for consistency + + myArgs.updateHistoryJSON = JSON.stringify(myVisualizer.updateHistory); + + $.get('survey.py', myArgs, function(dat) {}); + + + $("#iJustLearnedInput").val(''); + $("#iJustLearnedThanks").show(); + $.doTimeout('iJustLearnedThanksFadeOut', 1200, function() { + $("#iJustLearnedThanks").fadeOut(1000); + }); + }); +} diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js new file mode 100644 index 000000000..265b66a48 --- /dev/null +++ b/v3/js/opt-frontend.js @@ -0,0 +1,470 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// TODO: combine and minify with https://github.com/mishoo/UglifyJS2 +// and add version numbering using a ?-style query string to prevent +// caching snafus + + +// Pre-reqs: +// - pytutor.js +// - jquery.ba-bbq.min.js +// - jquery.ba-dotimeout.min.js // for event debouncing: http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/ +// - opt-frontend-common.js +// - js/togetherjs/togetherjs-min.js +// should all be imported BEFORE this file + + +var originFrontendJsFile = 'opt-frontend.js'; + +// for OPT live chat tutoring interface +var tutorRequested = false; +var helpQueueSize = 0; +var tutorAvailable = false; +var tutorWaitText = 'Please wait for the next available tutor.'; + +function setHelpQueueSizeLabel() { + if (helpQueueSize == 1) { + $("#helpQueueText").html('There is 1 person in line.'); + } + else if (helpQueueSize == 0 || helpQueueSize > 1) { + $("#helpQueueText").html('There are ' + helpQueueSize + ' people in line.'); + } +} + +function requestTutor() { + $("#getTutorBtn,#sharedSessionBtn,#surveyHeader").hide(); // hide ASAP! + $("#togetherjsStatus").html("Please wait ... requesting a tutor"); + tutorRequested = true; + TogetherJS(); +} + +function startSharedSession() { // override default + $("#getTutorBtn,#sharedSessionBtn,#surveyHeader").hide(); // hide ASAP! + $("#togetherjsStatus").html("Please wait ... loading shared session"); + tutorRequested = false; + TogetherJS(); +} + + +function TogetherjsReadyHandler() { + $("#getTutorBtn,#surveyHeader").hide(); + + if (tutorRequested) { + $.get(TogetherJSConfig_hubBase + 'request-help', + {url: TogetherJS.shareUrl(), id: TogetherJS.shareId()}, + null /* don't use a callback; rely on SSE */); + + $("#togetherjsStatus").html('
      \ + Please wait for the next available tutor. \ +
      '); + setHelpQueueSizeLabel(); // run after creating span#helpQueueText + } + else { + populateTogetherJsShareUrl(); + } +} + +function TogetherjsCloseHandler() { + if (tutorAvailable) { + $("#getTutorBtn").show(); + } + + if (appMode == "display") { + $("#surveyHeader").show(); + } +} + + +function executeCode(forceStartingInstr, forceRawInputLst) { + if (forceRawInputLst !== undefined) { + rawInputLst = forceRawInputLst; // UGLY global across modules, FIXME + } + + var backend_script = null; + if ($('#pythonVersionSelector').val() == '2') { + backend_script = python2_backend_script; + } + else if ($('#pythonVersionSelector').val() == '3') { + backend_script = python3_backend_script; + } + // experimental KRAZY MODE!!! + else if ($('#pythonVersionSelector').val() == '2crazy') { + backend_script = python2crazy_backend_script; + } + + var backendOptionsObj = {cumulative_mode: ($('#cumulativeModeSelector').val() == 'true'), + heap_primitives: ($('#heapPrimitivesSelector').val() == 'true'), + show_only_outputs: ($('#showOnlyOutputsSelector').val() == 'true'), + py_crazy_mode: ($('#pythonVersionSelector').val() == '2crazy'), + origin: originFrontendJsFile}; + + var surveyObj = getSurveyObject(); + if (surveyObj) { + backendOptionsObj.survey = surveyObj; + } + + var startingInstruction = forceStartingInstr ? forceStartingInstr : 0; + + var frontendOptionsObj = {startingInstruction: startingInstruction, + // tricky: selector 'true' and 'false' values are strings! + disableHeapNesting: ($('#heapPrimitivesSelector').val() == 'true'), + drawParentPointers: ($('#drawParentPointerSelector').val() == 'true'), + textualMemoryLabels: ($('#textualMemoryLabelsSelector').val() == 'true'), + showOnlyOutputs: ($('#showOnlyOutputsSelector').val() == 'true'), + executeCodeWithRawInputFunc: executeCodeWithRawInput, + + // always use the same visualizer ID for all + // instantiated ExecutionVisualizer objects, + // so that they can sync properly across + // multiple clients using TogetherJS. this + // shouldn't lead to problems since only ONE + // ExecutionVisualizer will be shown at a time + visualizerIdOverride: '1', + updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');}, + + // undocumented experimental modes: + pyCrazyMode: ($('#pythonVersionSelector').val() == '2crazy'), + holisticMode: ($('#cumulativeModeSelector').val() == 'holistic') + } + + executePythonCode(pyInputGetValue(), + backend_script, backendOptionsObj, + frontendOptionsObj, + 'pyOutputPane', + optFinishSuccessfulExecution, handleUncaughtExceptionFunc); +} + + +$(document).ready(function() { + setSurveyHTML(); + + // for OPT live chat tutoring interface + try { + var source = new EventSource(TogetherJSConfig_hubBase + 'learner-SSE'); + source.onmessage = function(e) { + var dat = JSON.parse(e.data); + + // nasty globals + helpQueueSize = dat.helpQueueUrls; + tutorAvailable = dat.helpAvailable; + + setHelpQueueSizeLabel(); + + if (tutorAvailable && !TogetherJS.running) { + $("#getTutorBtn").fadeIn(750, redrawConnectors); + } + else { + $("#getTutorBtn").fadeOut(750, redrawConnectors); + } + }; + } + catch(err) { + // ugh, SSE doesn't seem to work in Safari + console.warn("Sad ... EventSource not supported :("); + } + + $("#getTutorBtn").click(requestTutor); + + + // canned examples + + $("#tutorialExampleLink").click(function() { + $.get("example-code/py_tutorial.txt", pyInputSetValue); + return false; + }); + + $("#strtokExampleLink").click(function() { + $.get("example-code/strtok.txt", pyInputSetValue); + return false; + }); + + $("#listCompLink").click(function() { + $.get("example-code/list-comp.txt", pyInputSetValue); + return false; + }); + + $("#compsLink").click(function() { + $.get("example-code/comprehensions.txt", pyInputSetValue); + return false; + }); + + $("#fibonacciExampleLink").click(function() { + $.get("example-code/fib.txt", pyInputSetValue); + return false; + }); + + $("#memoFibExampleLink").click(function() { + $.get("example-code/memo_fib.txt", pyInputSetValue); + return false; + }); + + $("#factExampleLink").click(function() { + $.get("example-code/fact.txt", pyInputSetValue); + return false; + }); + + $("#filterExampleLink").click(function() { + $.get("example-code/filter.txt", pyInputSetValue); + return false; + }); + + $("#insSortExampleLink").click(function() { + $.get("example-code/ins_sort.txt", pyInputSetValue); + return false; + }); + + $("#aliasExampleLink,#firstExampleDupLink").click(function() { + $.get("example-code/aliasing.txt", pyInputSetValue); + return false; + }); + + $("#happyExampleLink").click(function() { + $.get("example-code/happy.txt", pyInputSetValue); + return false; + }); + + $("#newtonExampleLink").click(function() { + $.get("example-code/sqrt.txt", pyInputSetValue); + return false; + }); + + $("#oopSmallExampleLink").click(function() { + $.get("example-code/oop_small.txt", pyInputSetValue); + return false; + }); + + $("#mapExampleLink").click(function() { + $.get("example-code/map.txt", pyInputSetValue); + return false; + }); + + $("#rawInputExampleLink").click(function() { + $.get("example-code/raw_input.txt", pyInputSetValue); + return false; + }); + + $("#oop1ExampleLink").click(function() { + $.get("example-code/oop_1.txt", pyInputSetValue); + return false; + }); + + $("#oop2ExampleLink").click(function() { + $.get("example-code/oop_2.txt", pyInputSetValue); + return false; + }); + + $("#inheritanceExampleLink").click(function() { + $.get("example-code/oop_inherit.txt", pyInputSetValue); + return false; + }); + + $("#sumExampleLink").click(function() { + $.get("example-code/sum.txt", pyInputSetValue); + return false; + }); + + $("#pwGcdLink").click(function() { + $.get("example-code/wentworth_gcd.txt", pyInputSetValue); + return false; + }); + + $("#pwSumListLink").click(function() { + $.get("example-code/wentworth_sumList.txt", pyInputSetValue); + return false; + }); + + $("#towersOfHanoiLink").click(function() { + $.get("example-code/towers_of_hanoi.txt", pyInputSetValue); + return false; + }); + + $("#pwTryFinallyLink").click(function() { + $.get("example-code/wentworth_try_finally.txt", pyInputSetValue); + return false; + }); + + $("#sumCubesLink").click(function() { + $.get("example-code/sum-cubes.txt", pyInputSetValue); + return false; + }); + + $("#decoratorsLink").click(function() { + $.get("example-code/decorators.txt", pyInputSetValue); + return false; + }); + + $("#genPrimesLink").click(function() { + $.get("example-code/gen_primes.txt", pyInputSetValue); + return false; + }); + + $("#genExprLink").click(function() { + $.get("example-code/genexpr.txt", pyInputSetValue); + return false; + }); + + + $('#closure1Link').click(function() { + $.get("example-code/closures/closure1.txt", pyInputSetValue); + return false; + }); + $('#closure2Link').click(function() { + $.get("example-code/closures/closure2.txt", pyInputSetValue); + return false; + }); + $('#closure3Link').click(function() { + $.get("example-code/closures/closure3.txt", pyInputSetValue); + return false; + }); + $('#closure4Link').click(function() { + $.get("example-code/closures/closure4.txt", pyInputSetValue); + return false; + }); + $('#closure5Link').click(function() { + $.get("example-code/closures/closure5.txt", pyInputSetValue); + return false; + }); + $('#lambdaParamLink').click(function() { + $.get("example-code/closures/lambda-param.txt", pyInputSetValue); + return false; + }); + $('#tortureLink').click(function() { + $.get("example-code/closures/student-torture.txt", pyInputSetValue); + return false; + }); + + + + $('#aliasing1Link').click(function() { + $.get("example-code/aliasing/aliasing1.txt", pyInputSetValue); + return false; + }); + $('#aliasing2Link').click(function() { + $.get("example-code/aliasing/aliasing2.txt", pyInputSetValue); + return false; + }); + $('#aliasing3Link').click(function() { + $.get("example-code/aliasing/aliasing3.txt", pyInputSetValue); + return false; + }); + $('#aliasing4Link').click(function() { + $.get("example-code/aliasing/aliasing4.txt", pyInputSetValue); + return false; + }); + $('#aliasing5Link').click(function() { + $.get("example-code/aliasing/aliasing5.txt", pyInputSetValue); + return false; + }); + $('#aliasing6Link').click(function() { + $.get("example-code/aliasing/aliasing6.txt", pyInputSetValue); + return false; + }); + $('#aliasing7Link').click(function() { + $.get("example-code/aliasing/aliasing7.txt", pyInputSetValue); + return false; + }); + $('#aliasing8Link').click(function() { + $.get("example-code/aliasing/aliasing8.txt", pyInputSetValue); + return false; + }); + + + $('#ll1Link').click(function() { + $.get("example-code/linked-lists/ll1.txt", pyInputSetValue); + return false; + }); + $('#ll2Link').click(function() { + $.get("example-code/linked-lists/ll2.txt", pyInputSetValue); + return false; + }); + $('#sumListLink').click(function() { + $.get("example-code/sum-list.txt", pyInputSetValue); + return false; + }); + + $('#varargsLink').click(function() { + $.get("example-code/varargs.txt", pyInputSetValue); + return false; + }); + + $('#forElseLink').click(function() { + $.get("example-code/for-else.txt", pyInputSetValue); + return false; + }); + + $('#nonlocalLink').click(function() { + $.get("example-code/nonlocal.txt", pyInputSetValue); + return false; + }); + + $('#metaclassLink').click(function() { + $.get("example-code/metaclass.txt", pyInputSetValue); + return false; + }); + + $('#cmFibLink').click(function() { + $.get("example-code/chris-meyers/optFib.txt", pyInputSetValue); + $("#showOnlyOutputsSelector").val('true'); + return false; + }); + + $('#cmMinPathLink').click(function() { + $.get("example-code/chris-meyers/optMinpath.txt", pyInputSetValue); + $("#showOnlyOutputsSelector").val('true'); + return false; + }); + + $('#cmKnapsackLink').click(function() { + $.get("example-code/chris-meyers/optKnapsack.txt", pyInputSetValue); + $("#showOnlyOutputsSelector").val('true'); + return false; + }); + + $('#cmSieveLink').click(function() { + $.get("example-code/chris-meyers/optSieve.txt", pyInputSetValue); + $("#showOnlyOutputsSelector").val('true'); + return false; + }); + + + $('#genEmbedBtn').bind('click', function() { + assert(appMode == 'display' || appMode == 'visualize' /* 'visualize' is deprecated */); + var myArgs = getAppState(); + delete myArgs.mode; + myArgs.codeDivWidth = myVisualizer.DEFAULT_EMBEDDED_CODE_DIV_WIDTH; + myArgs.codeDivHeight = myVisualizer.DEFAULT_EMBEDDED_CODE_DIV_HEIGHT; + + var embedUrlStr = $.param.fragment(domain + "iframe-embed.html", myArgs, 2 /* clobber all */); + var iframeStr = ''; + $('#embedCodeOutput').val(iframeStr); + }); + + genericOptFrontendReady(); // initialize at the end +}); diff --git a/v3/js/opt-ipy.js b/v3/js/opt-ipy.js new file mode 100644 index 000000000..76159d847 --- /dev/null +++ b/v3/js/opt-ipy.js @@ -0,0 +1,134 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Front-end for OPT + IPython shell integration + + +// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file + + +var myVisualizer = null; // singleton ExecutionVisualizer instance + + +$(document).ready(function() { + // redraw connector arrows on window resize + $(window).resize(function() { + myVisualizer.redrawConnectors(); + }); + + updater.start(); +}); + + +// Adapted from https://github.com/facebook/tornado/tree/master/demos/websocket + +// Copyright 2009 FriendFeed +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. You may obtain +// a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations +// under the License. + +var updater = { + socket: null, + start: function() { + var url = "ws://" + location.host + "/chatsocket"; + updater.socket = new WebSocket(url); + updater.socket.onmessage = function(event) { + updater.showMessage(JSON.parse(event.data)); + } + }, + + showMessage: function(message) { + if (message.type == 'wholetrace') { + payload = message.payload + + var curInstr = 0; + var jumpToEnd = true; // yes by default + + // if the user isn't currently viewing the final element of + // the trace, then restore their original position, so that + // their display doesn't suddenly jump to the end + if (myVisualizer) { + curInstr = myVisualizer.curInstr; + jumpToEnd = (curInstr == myVisualizer.curTrace.length - 1); + } + + if (jumpToEnd) { + myVisualizer = new ExecutionVisualizer('vizDiv', + payload, + {embeddedMode: true, + jumpToEnd: true}); + } + else { + myVisualizer = new ExecutionVisualizer('vizDiv', + payload, + {embeddedMode: true, + startingInstruction: curInstr}); + } + + // set keyboard bindings + // VERY IMPORTANT to clear and reset this every time or + // else the handlers might be bound multiple times + $(document).unbind('keydown'); + $(document).keydown(function(k) { + if (k.keyCode == 37) { // left arrow + if (myVisualizer.stepBack()) { + k.preventDefault(); // don't horizontally scroll the display + } + } + else if (k.keyCode == 39) { // right arrow + if (myVisualizer.stepForward()) { + k.preventDefault(); // don't horizontally scroll the display + } + } + }); + } + else if (message.type == 'difftrace') { + // TODO: implement optimization based on, say, + // https://code.google.com/p/google-diff-match-patch/ + + // for starters, simply create a new ExecutionVisualizer + // object using the patched version of the payload + } + else if (message.type == 'clear') { + myVisualizer = null; + $('#vizDiv').empty(); + $(document).unbind('keydown'); + return; + } + } +}; diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js new file mode 100644 index 000000000..1d279ffc6 --- /dev/null +++ b/v3/js/opt-lessons.js @@ -0,0 +1,118 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file + +var backend_script = 'exec'; // URL of backend script, which must eventually call pg_logger.py + +var myVisualizer = null; // singleton ExecutionVisualizer instance + +var lessonScript = null; +var metadataJSON = null; + +function parseLessonFile(dat) { + var toks = dat.split('======'); + + // globals + lessonScript = toks[0].rtrim(); + metadataJSON = $.parseJSON(toks[1]); + + $('#lessonTitle').html(metadataJSON.title); + $('#lessonDescription').html(metadataJSON.description); + + document.title = metadataJSON.title + ' - Online Python Tutor (v3)'; + + $.get(backend_script, + {user_script : lessonScript}, + function(dataFromBackend) { + var trace = dataFromBackend.trace; + + // don't enter visualize mode if there are killer errors: + if (!trace || + (trace.length == 0) || + (trace[trace.length - 1].event == 'uncaught_exception')) { + + if (trace.length == 1) { + alert(trace[0].exception_msg); + } + else { + alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); + } + } + else { + myVisualizer = new ExecutionVisualizer('pyOutputPane', + dataFromBackend, + {embeddedMode: true, + updateOutputCallback: updateLessonNarration}); + + myVisualizer.updateOutput(); + } + }, + "json"); +} + +function updateLessonNarration(myViz) { + var curInstr = myViz.curInstr; + + assert(metadataJSON); + + var annotation = metadataJSON[curInstr + 1]; // adjust for indexing diffs + if (annotation) { + $('#lessonNarration').html(annotation); + } + else { + $('#lessonNarration').html(''); + } + + // hack from John DeNero to ensure that once a div grows it height, it + // never shrinks again + $('#lessonNarration').css('min-height', $('#lessonNarration').css('height')); +} + +$(document).ready(function() { + + //$.get("lessons/aliasing.txt", parseLessonFile); + //$.get("lessons/dive-into-python-311.txt", parseLessonFile); + //$.get("lessons/for-else.txt", parseLessonFile); + $.get("lessons/varargs.txt", parseLessonFile); + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Server error (possibly due to memory/resource overload)."); + }); + + + // redraw connector arrows on window resize + $(window).resize(function() { + if (myVisualizer) { + myVisualizer.redrawConnectors(); + } + }); + +}); diff --git a/v3/js/opt-office-mix.js b/v3/js/opt-office-mix.js new file mode 100644 index 000000000..f10ff57c1 --- /dev/null +++ b/v3/js/opt-office-mix.js @@ -0,0 +1,303 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Pre-reqs: +// - pytutor.js +// - jquery.ba-bbq.min.js +// - jquery.ba-dotimeout.min.js // for event debouncing: http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/ +// - opt-frontend-common.js +// - js/togetherjs/togetherjs-min.js +// should all be imported BEFORE this file + + +var originFrontendJsFile = 'opt-office-mix.js'; + +// modeled after Kurt's simplelab.ts +var _labEditor = null; // for Edit mode +var _labViewer = null; // for View mode + + +function executeCode(forceStartingInstr, forceRawInputLst) { + $('#loadingPane').html('Please wait ... executing Python code.').show(); + + if (forceRawInputLst !== undefined) { + rawInputLst = forceRawInputLst; // UGLY global across modules, FIXME + } + + var backend_script = null; + if ($('#pythonVersionSelector').val() == '2') { + backend_script = python2_backend_script; + } + else if ($('#pythonVersionSelector').val() == '3') { + backend_script = python3_backend_script; + } + + var backendOptionsObj = {cumulative_mode: ($('#cumulativeModeSelector').val() == 'true'), + heap_primitives: ($('#heapPrimitivesSelector').val() == 'true'), + show_only_outputs: false, + py_crazy_mode: false, + origin: originFrontendJsFile}; + + var startingInstruction = forceStartingInstr ? forceStartingInstr : 0; + + var frontendOptionsObj = {startingInstruction: startingInstruction, + embeddedMode: true, + + // tricky: selector 'true' and 'false' values are strings! + disableHeapNesting: ($('#heapPrimitivesSelector').val() == 'true'), + textualMemoryLabels: ($('#textualMemoryLabelsSelector').val() == 'true'), + executeCodeWithRawInputFunc: executeCodeWithRawInput, + + // undocumented experimental modes: + pyCrazyMode: false, holisticMode: false + } + + executePythonCode(pyInputGetValue(), + backend_script, backendOptionsObj, + frontendOptionsObj, + 'pyOutputPane', + officeMixFinishSuccessfulExecution, handleUncaughtExceptionFunc); +} + + +function officeMixFinishSuccessfulExecution() { + enterDisplayMode(); // do this first! + $('#pyOutputPane #editCodeLinkDiv').hide(); // don't have explicit "Edit code" link + $('#loadingPane').hide(); + + $("#toggleModebtn").html("Edit code"); +} + + +// Adapted from Kurt's simplelab.ts +// +// Returns the lab configuration from the provided data +function getConfigurationFromData(dat) { + var appVersion = { major: 1, minor: 0 }; + var activityComponent = { + type: Labs.Components.ActivityComponentType, + name: "", // XXX: can this be blank? + values: {}, + data: dat, + secure: false + }; + var configuration = { + appVersion: appVersion, + components: [activityComponent], + name: "", // XXX: can this be blank? + timeline: null, + analytics: null + }; + + return configuration; +} + + +// override setFronendError in opt-frontend-common.js +// NB: this file must be included AFTER opt-frontend-common.js +function setFronendError(lines) { + var errorStr = lines.map(htmlspecialchars).join('
      '); + $('#loadingPane').html(errorStr).show(); + //$("#frontendErrorOutput").html(errorStr); + //$("#frontendErrorOutput").show(); +} + + +function officeMixEnterViewMode(firstTime) { + if (_labEditor) { + _labEditor.done(function() { _labEditor = null; }); + } + + Labs.takeLab(function(err, labInstance) { + if (labInstance) { + _labViewer = labInstance; // global + + if (firstTime) { + var savedAppState = _labViewer.components[0].component.data; + setToggleOptions(savedAppState); + if (savedAppState.code) { + pyInputSetValue(savedAppState.code); + executeCodeFromScratch(); + } + } + } + }); + + // on second thought, don't hide this + //$("#toggleModebtn").hide(); +} + +function officeMixEnterEditMode(firstTime) { + if (_labViewer) { + _labViewer.done(function() { _labViewer = null; }); + } + + Labs.editLab(function(err, labEditor) { + if (labEditor) { + _labEditor = labEditor; // global + + if (firstTime) { + _labEditor.getConfiguration(function(err, configuration) { + if (configuration) { + var savedAppState = configuration.components[0].data; + setToggleOptions(savedAppState); + if (savedAppState.code) { + pyInputSetValue(savedAppState.code); + } + } + }); + + // set configuration on every code edit and option toggle, to + // set the 'dirty bit' on the enclosing PPT file + if (useCodeMirror) { + pyInputCodeMirror.on("change", saveCurrentConfiguration); + } + else { + pyInputAceEditor.getSession().on("change", saveCurrentConfiguration); + } + $('select').change(saveCurrentConfiguration); + } + } + }); + + $("#toggleModebtn").html("Visualize code").show(); + enterEditMode(); +} + +function saveCurrentConfiguration() { + if (_labEditor) { + _labEditor.setConfiguration(getConfigurationFromData(getAppState()), + function() {} /* empty error handler */); + } +} + + +$(document).ready(function() { + // DON'T switch into office mix view mode ... this is just a "Preview" + // that's only relevant in Edit mode + $("#toggleModebtn").click(function() { + if (appMode == 'edit') { + executeCodeFromScratch(); + } else { + $("#toggleModebtn").html("Visualize code"); + enterEditMode(); + } + }); + + // To run in https://labsjs.blob.core.windows.net/sdk/LabsJS-1.0.4/labshost.html + // append "?PostMessageLabHost" to the query string. + Labs.DefaultHostBuilder = function() { + if (window.location.href.indexOf("PostMessageLabHost") !== -1) { + return new Labs.PostMessageLabHost("test", parent, "*"); + } else { + return new Labs.OfficeJSLabHost(); + } + }; + + + // be friendly to the browser's forward and back buttons + // thanks to http://benalman.com/projects/jquery-bbq-plugin/ + $(window).bind("hashchange", function(e) { + // if you've got some preseeded code, then parse the entire query + // string from scratch just like a page reload + if ($.bbq.getState('code')) { + parseQueryString(); + } + // otherwise just do an incremental update + else { + var newMode = $.bbq.getState('mode'); + console.log('hashchange:', newMode, window.location.hash); + updateAppDisplay(newMode); + } + }); + + + if (useCodeMirror) { + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 4, + indentUnit: 4, + // convert tab into four spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + }); + + pyInputCodeMirror.setSize(null, '300px'); + } + else { + initAceEditor(300); + } + + // no frills footer + $("#footer").css("margin-top", "0px") + .css("padding-top", "0px") + .css("border-top", "0px"); + + $(window).resize(redrawConnectors); + + // register a generic AJAX error handler + $(document).ajaxError(function(evt, jqxhr, settings, exception) { + setFronendError(["Server error! Your code might be too long to properly visualize (e.g., over 100 lines),", + "so try again with a smaller piece of code.", + "Or report a bug to philip@pgbovine.net by clicking on the 'Generate URL'", + "button at the bottom and including a URL in your email."]); + + doneExecutingCode(); + }); + + clearFrontendError(); + + + Labs.connect(function (err, connectionResponse) { + var initialMode = Labs.Core.LabMode[connectionResponse.mode]; + + if (initialMode == 'Edit') { + officeMixEnterEditMode(true); + } else if (initialMode == 'View') { + officeMixEnterViewMode(true); + } + + // initialize these callbacks only after Labs.connect is successful + Labs.on(Labs.Core.EventTypes.ModeChanged, function(data) { + if (data.mode == 'Edit') { + officeMixEnterEditMode(false); + } else if (data.mode == 'View') { + officeMixEnterViewMode(false); + } + }); + + Labs.on(Labs.Core.EventTypes.Activate, function() { + }); + + Labs.on(Labs.Core.EventTypes.Deactivate, function() { + }); + }); + + pyInputSetValue('x = "world"\nprint("hello " + x)'); // set default +}); diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js new file mode 100644 index 000000000..494b65423 --- /dev/null +++ b/v3/js/pytutor.js @@ -0,0 +1,3960 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2014 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +/* To import, put this at the top of your HTML page: + + + + + + + + + + + + + + + + +*/ + + +/* Coding gotchas: + +- NEVER use naked $(__) or d3.select(__) statements to select DOM elements. + + ALWAYS use myViz.domRoot or myViz.domRootD3 for jQuery and D3, respectively. + + Otherwise things will break in weird ways when you have more than one visualization + embedded within a webpage, due to multiple matches in the global namespace. + + +- always use generateID to generate unique CSS IDs, or else things will break + when multiple ExecutionVisualizer instances are displayed on a webpage + +*/ + +// include hooks.js after you include pytutor.js, if you want to use hooks +// see hooks.js for more instructions. (hooking code created by David Pritchard) +var try_hook = function(hook_name, args) { + return [false]; // just a stub +} + +var SVG_ARROW_POLYGON = '0,3 12,3 12,0 18,5 12,10 12,7 0,7'; +var SVG_ARROW_HEIGHT = 10; // must match height of SVG_ARROW_POLYGON + +var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance + +// domRootID is the string ID of the root element where to render this instance +// dat is data returned by the Python Tutor backend consisting of two fields: +// code - string of executed code +// trace - a full execution trace +// +// params is an object containing optional parameters, such as: +// jumpToEnd - if non-null, jump to the very end of execution +// startingInstruction - the (zero-indexed) execution point to display upon rendering +// hideOutput - hide "Program output" display +// codeDivHeight - maximum height of #pyCodeOutputDiv (in integer pixels) +// codeDivWidth - maximum width of #pyCodeOutputDiv (in integer pixels) +// editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' (if null, then 'Edit code' link hidden) +// allowEditAnnotations - allow user to edit per-step annotations (default: false) +// embeddedMode - shortcut for hideOutput=true, allowEditAnnotations=false, +// codeDivWidth=this.DEFAULT_EMBEDDED_CODE_DIV_WIDTH, +// codeDivHeight=this.DEFAULT_EMBEDDED_CODE_DIV_HEIGHT +// disableHeapNesting - if true, then render all heap objects at the top level (i.e., no nested objects) +// drawParentPointers - if true, then draw environment diagram parent pointers for all frames +// WARNING: there are hard-to-debug MEMORY LEAKS associated with activating this option +// textualMemoryLabels - render references using textual memory labels rather than as jsPlumb arrows. +// this is good for slow browsers or when used with disableHeapNesting +// to prevent "arrow overload" +// showOnlyOutputs - show only program outputs and NOT internal data structures +// updateOutputCallback - function to call (with 'this' as parameter) +// whenever this.updateOutput() is called +// (BEFORE rendering the output display) +// heightChangeCallback - function to call (with 'this' as parameter) +// whenever the HEIGHT of #dataViz changes +// verticalStack - if true, then stack code display ON TOP of visualization +// (else place side-by-side) +// visualizerIdOverride - override visualizer ID instead of auto-assigning it +// executeCodeWithRawInputFunc - function to call when you want to re-execute the given program +// with some new user input (somewhat hacky!) +// highlightLines - highlight current and previously executed lines (default: false) +// arrowLines - draw arrows pointing to current and previously executed lines (default: true) +// compactFuncLabels - render functions with a 'func' prefix and no type label +// showAllFrameLabels - display frame and parent frame labels for all functions (default: false) +// pyCrazyMode - run with Py2crazy, which provides expression-level +// granularity instead of line-level granularity (HIGHLY EXPERIMENTAL!) +// hideCode - hide the code display and show only the data structure viz +// tabularView - render a tabular view of ALL steps at once (EXPERIMENTAL) +function ExecutionVisualizer(domRootID, dat, params) { + this.curInputCode = dat.code.rtrim(); // kill trailing spaces + this.curTrace = dat.trace; + + this.DEFAULT_EMBEDDED_CODE_DIV_WIDTH = 350; + this.DEFAULT_EMBEDDED_CODE_DIV_HEIGHT = 400; + + // if the final entry is raw_input or mouse_input, then trim it from the trace and + // set a flag to prompt for user input when execution advances to the + // end of the trace + if (this.curTrace.length > 0) { + var lastEntry = this.curTrace[this.curTrace.length - 1]; + if (lastEntry.event == 'raw_input') { + this.promptForUserInput = true; + this.userInputPromptStr = lastEntry.prompt; + this.curTrace.pop() // kill last entry so that it doesn't get displayed + } + else if (lastEntry.event == 'mouse_input') { + this.promptForMouseInput = true; + this.userInputPromptStr = lastEntry.prompt; + this.curTrace.pop() // kill last entry so that it doesn't get displayed + } + } + + this.curInstr = 0; + + this.params = params; + if (!this.params) { + this.params = {}; // make it an empty object by default + } + + var arrowLinesDef = (this.params.arrowLines !== undefined); + var highlightLinesDef = (this.params.highlightLines !== undefined); + + if (!arrowLinesDef && !highlightLinesDef) { + // neither is set + this.params.highlightLines = false; + this.params.arrowLines = true; + } + else if (arrowLinesDef && highlightLinesDef) { + // both are set, so just use their set values + } + else if (arrowLinesDef) { + // only arrowLines set + this.params.highlightLines = !(this.params.arrowLines); + } + else { + // only highlightLines set + this.params.arrowLines = !(this.params.highlightLines); + } + + this.compactFuncLabels = this.params.compactFuncLabels; + + // audible! + if (this.params.pyCrazyMode) { + this.params.arrowLines = this.params.highlightLines = false; + } + + if (this.params.visualizerIdOverride) { + this.visualizerID = this.params.visualizerIdOverride; + } + else { + // needs to be unique! + this.visualizerID = curVisualizerID; + curVisualizerID++; + } + + + this.leftGutterSvgInitialized = false; + this.arrowOffsetY = undefined; + this.codeRowHeight = undefined; + + // avoid 'undefined' state + this.disableHeapNesting = (this.params.disableHeapNesting == true); + this.drawParentPointers = (this.params.drawParentPointers == true); + this.textualMemoryLabels = (this.params.textualMemoryLabels == true); + this.showOnlyOutputs = (this.params.showOnlyOutputs == true); + this.tabularView = (this.params.tabularView == true); + this.showAllFrameLabels = (this.params.showAllFrameLabels == true); + + this.executeCodeWithRawInputFunc = this.params.executeCodeWithRawInputFunc; + + // cool, we can create a separate jsPlumb instance for each visualization: + this.jsPlumbInstance = jsPlumb.getInstance({ + Endpoint: ["Dot", {radius:3}], + EndpointStyles: [{fillStyle: connectorBaseColor}, {fillstyle: null} /* make right endpoint invisible */], + Anchors: ["RightMiddle", "LeftMiddle"], + PaintStyle: {lineWidth:1, strokeStyle: connectorBaseColor}, + + // bezier curve style: + //Connector: [ "Bezier", { curviness:15 }], /* too much 'curviness' causes lines to run together */ + //Overlays: [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]], + + // state machine curve style: + Connector: [ "StateMachine" ], + Overlays: [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]], + EndpointHoverStyles: [{fillStyle: connectorHighlightColor}, {fillstyle: null} /* make right endpoint invisible */], + HoverPaintStyle: {lineWidth: 1, strokeStyle: connectorHighlightColor}, + }); + + + // true iff trace ended prematurely since maximum instruction limit has + // been reached + var instrLimitReached = false; + + + // the root elements for jQuery and D3 selections, respectively. + // ALWAYS use these and never use naked $(__) or d3.select(__) + this.domRoot = $('#' + domRootID); + this.domRoot.data("vis",this); // bnm store a reference to this as div data for use later. + this.domRootD3 = d3.select('#' + domRootID); + + // stick a new div.ExecutionVisualizer within domRoot and make that + // the new domRoot: + this.domRoot.html('
      '); + + this.domRoot = this.domRoot.find('div.ExecutionVisualizer'); + this.domRootD3 = this.domRootD3.select('div.ExecutionVisualizer'); + + // initialize in renderPyCodeOutput() + this.codeOutputLines = null; + this.breakpoints = null; // set of execution points to set as breakpoints + this.sortedBreakpointsList = null; // sorted and synced with breakpointLines + this.hoverBreakpoints = null; // set of breakpoints because we're HOVERING over a given line + + this.classAttrsHidden = {}; // kludgy hack for 'show/hide attributes' for class objects + + try_hook("end_constructor", {myViz:this}); + + this.hasRendered = false; + + this.render(); // go for it! + +} + +// for managing state related to pesky jsPlumb connectors, need to reset +// before every call to renderDataStructures, or else all hell breaks +// loose. yeah, this is kludgy and stateful, but at least all of the +// relevant state gets shoved into one unified place +ExecutionVisualizer.prototype.resetJsPlumbManager = function() { + this.jsPlumbManager = { + heap_pointer_src_id: 1, // increment this to be unique for each heap_pointer_src_* + + // Key: CSS ID of the div element representing the stack frame variable + // (for stack->heap connections) or heap object (for heap->heap connections) + // the format is: '__heap_pointer_src_' + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is given by generateHeapObjID()) + // + // The reason we need to prepend this.visualizerID is because jsPlumb needs + // GLOBALLY UNIQUE IDs for use as connector endpoints. + // + // TODO: jsPlumb might be able to directly take DOM elements rather + // than IDs, which makes the above point moot. But let's just stick + // with this for now until I want to majorly refactor :) + + // the only elements in these sets are NEW elements to be rendered in this + // particular call to renderDataStructures. + connectionEndpointIDs: d3.map(), + heapConnectionEndpointIDs: d3.map(), // subset of connectionEndpointIDs for heap->heap connections + // analogous to connectionEndpointIDs, except for environment parent pointers + parentPointerConnectionEndpointIDs: d3.map(), + + renderedHeapObjectIDs: d3.map(), // format given by generateHeapObjID() + }; +} + + +// create a unique ID, which is often necessary so that jsPlumb doesn't get confused +// due to multiple ExecutionVisualizer instances being displayed simultaneously +ExecutionVisualizer.prototype.generateID = function(original_id) { + // (it's safer to start names with a letter rather than a number) + return 'v' + this.visualizerID + '__' + original_id; +} + +// create a unique CSS ID for a heap object, which should include both +// its ID and the current step number. this is necessary if we want to +// display the same heap object at multiple execution steps. +ExecutionVisualizer.prototype.generateHeapObjID = function(objID, stepNum) { + return this.generateID('heap_object_' + objID + '_s' + stepNum); +} + + +ExecutionVisualizer.prototype.render = function() { + if (this.hasRendered) { + alert('ERROR: You should only call render() ONCE on an ExecutionVisualizer object.'); + return; + } + + + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + var codeDisplayHTML = + '
      \ +
      \ + \ +
      \ +
      \ + \ + \ + Step ? of ?\ + \ + \ +
      \ +
      \ + \ + \ + \ +
      \ +
      \ +
      \ +
      \ + \ +
      \ +
      \ +
      \ +
      '; + + var outputsHTML = + '
      \ +
      \ + Program output:
      \ + \ +
      '; + + var codeVizHTML = + '
      \ +
      \ + \ + \ + \ + \ +
      \ +
      \ +
      Frames
      \ +
      \ +
      \ +
      \ +
      \ +
      Objects
      \ +
      \ +
      \ +
      '; + + // override + if (myViz.tabularView) { + codeVizHTML = '
      '; + } + + var vizHeaderHTML = + '
      \ + \ +
      \ + \ +
      \ +
      '; + + if (this.params.verticalStack) { + this.domRoot.html(vizHeaderHTML + '
      ' + + codeDisplayHTML + '
      ' + + codeVizHTML + '
      '); + } + else { + this.domRoot.html(vizHeaderHTML + '
      ' + + codeDisplayHTML + '' + + codeVizHTML + '
      '); + } + + if (this.showOnlyOutputs) { + myViz.domRoot.find('#dataViz').hide(); + this.domRoot.find('#vizLayoutTdSecond').append(outputsHTML); + + if (this.params.verticalStack) { + this.domRoot.find('#vizLayoutTdSecond').css('padding-top', '25px'); + } + else { + this.domRoot.find('#vizLayoutTdSecond').css('padding-left', '25px'); + } + } + else { + this.domRoot.find('#vizLayoutTdFirst').append(outputsHTML); + } + + if (this.params.arrowLines) { + this.domRoot.find('#legendDiv') + .append(' line that has just executed') + .append('

      next line to execute

      '); + + myViz.domRootD3.select('svg#prevLegendArrowSVG') + .append('polygon') + .attr('points', SVG_ARROW_POLYGON) + .attr('fill', lightArrowColor); + + myViz.domRootD3.select('svg#curLegendArrowSVG') + .append('polygon') + .attr('points', SVG_ARROW_POLYGON) + .attr('fill', darkArrowColor); + } + else if (this.params.highlightLines) { + myViz.domRoot.find('#legendDiv') + .append('line that has just executed ') + .append('next line to execute') + } + else if (this.params.pyCrazyMode) { + myViz.domRoot.find('#legendDiv') + .append('Py2crazy mode!') + .append(' Stepping through (roughly) each executed expression. Color codes:

      ') + .append('expression that just executed
      ') + .append('next expression to execute'); + } + + + if (this.params.editCodeBaseURL) { + var urlStr = $.param.fragment(this.params.editCodeBaseURL, + {code: this.curInputCode}, + 2); + this.domRoot.find('#editBtn').attr('href', urlStr); + } + else { + this.domRoot.find('#editCodeLinkDiv').hide(); // just hide for simplicity! + this.domRoot.find('#editBtn').attr('href', "#"); + this.domRoot.find('#editBtn').click(function(){return false;}); // DISABLE the link! + } + + if (this.params.allowEditAnnotations !== undefined) { + this.allowEditAnnotations = this.params.allowEditAnnotations; + } + else { + this.allowEditAnnotations = false; + } + + if (this.params.pyCrazyMode !== undefined) { + this.pyCrazyMode = this.params.pyCrazyMode; + } + else { + this.pyCrazyMode = false; + } + + this.domRoot.find('#stepAnnotationEditor').hide(); + + if (this.params.embeddedMode) { + this.params.hideOutput = true; // put this before hideOutput handler + + // don't override if they've already been set! + if (this.params.codeDivWidth === undefined) { + this.params.codeDivWidth = this.DEFAULT_EMBEDDED_CODE_DIV_WIDTH; + } + + if (this.params.codeDivHeight === undefined) { + this.params.codeDivHeight = this.DEFAULT_EMBEDDED_CODE_DIV_HEIGHT; + } + + this.allowEditAnnotations = false; + + // add an extra label to link back to the main site, so that viewers + // on the embedded page know that they're seeing an OPT visualization + this.domRoot.find('#codeDisplayDiv').append('

      Visualized using Online Python Tutor by Philip Guo
      '); + } + + myViz.editAnnotationMode = false; + + if (this.allowEditAnnotations) { + var ab = this.domRoot.find('#annotateBtn'); + + ab.click(function() { + if (myViz.editAnnotationMode) { + myViz.enterViewAnnotationsMode(); + + myViz.domRoot.find("#jmpFirstInstr,#jmpLastInstr,#jmpStepBack,#jmpStepFwd,#executionSlider,#editCodeLinkDiv,#stepAnnotationViewer").show(); + myViz.domRoot.find('#stepAnnotationEditor').hide(); + ab.html('Annotate this step'); + } + else { + myViz.enterEditAnnotationsMode(); + + myViz.domRoot.find("#jmpFirstInstr,#jmpLastInstr,#jmpStepBack,#jmpStepFwd,#executionSlider,#editCodeLinkDiv,#stepAnnotationViewer").hide(); + myViz.domRoot.find('#stepAnnotationEditor').show(); + ab.html('Done annotating'); + } + }); + } + else { + this.domRoot.find('#annotateBtn').hide(); + } + + + // not enough room for these extra buttons ... + if (this.params.codeDivWidth && + this.params.codeDivWidth < 470) { + this.domRoot.find('#jmpFirstInstr').hide(); + this.domRoot.find('#jmpLastInstr').hide(); + } + + + if (this.params.codeDivWidth) { + // set width once + this.domRoot.find('#codeDisplayDiv').width(this.params.codeDivWidth); + // it will propagate to the slider + + this.domRoot.find("#pyStdout").css("width", this.params.codeDivWidth - 20 /* wee tweaks */); + } + + // enable left-right draggable pane resizer (originally from David Pritchard) + this.domRoot.find('#codeDisplayDiv').resizable({ + handles: "e", + minWidth: 100, //otherwise looks really goofy + resize: function(event, ui) { // old name: syncStdoutWidth, now not appropriate + // resize stdout box in unison + myViz.domRoot.find("#pyStdout").css("width", $(this).width() - 20 /* wee tweaks */); + + myViz.domRoot.find("#codeDisplayDiv").css("height", "auto"); // redetermine height if necessary + if (myViz.params.updateOutputCallback) // report size change + myViz.params.updateOutputCallback(this); + }}); + + if (this.params.codeDivHeight) { + this.domRoot.find('#pyCodeOutputDiv') + .css('max-height', this.params.codeDivHeight + 'px'); + } + + + // create a persistent globals frame + // (note that we need to keep #globals_area separate from #stack for d3 to work its magic) + this.domRoot.find("#globals_area").append('
      Global frame
      '); + + + if (this.params.hideOutput) { + this.domRoot.find('#progOutputs').hide(); + } + + this.domRoot.find("#jmpFirstInstr").click(function() { + myViz.renderStep(0); + }); + + this.domRoot.find("#jmpLastInstr").click(function() { + myViz.renderStep(myViz.curTrace.length - 1); + }); + + this.domRoot.find("#jmpStepBack").click(function() { + myViz.stepBack(); + }); + + this.domRoot.find("#jmpStepFwd").click(function() { + myViz.stepForward(); + }); + + // disable controls initially ... + this.domRoot.find("#vcrControls #jmpFirstInstr").attr("disabled", true); + this.domRoot.find("#vcrControls #jmpStepBack").attr("disabled", true); + this.domRoot.find("#vcrControls #jmpStepFwd").attr("disabled", true); + this.domRoot.find("#vcrControls #jmpLastInstr").attr("disabled", true); + + + + // must postprocess curTrace prior to running precomputeCurTraceLayouts() ... + var lastEntry = this.curTrace[this.curTrace.length - 1]; + + this.instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); + + if (this.instrLimitReached) { + this.curTrace.pop() // kill last entry + var warningMsg = lastEntry.exception_msg; + myViz.domRoot.find("#errorOutput").html(htmlspecialchars(warningMsg)); + myViz.domRoot.find("#errorOutput").show(); + } + + // set up slider after postprocessing curTrace + + var sliderDiv = this.domRoot.find('#executionSlider'); + sliderDiv.slider({min: 0, max: this.curTrace.length - 1, step: 1}); + //disable keyboard actions on the slider itself (to prevent double-firing of events) + sliderDiv.find(".ui-slider-handle").unbind('keydown'); + // make skinnier and taller + sliderDiv.find(".ui-slider-handle").css('width', '0.8em'); + sliderDiv.find(".ui-slider-handle").css('height', '1.4em'); + this.domRoot.find(".ui-widget-content").css('font-size', '0.9em'); + + this.domRoot.find('#executionSlider').bind('slide', function(evt, ui) { + // this is SUPER subtle. if this value was changed programmatically, + // then evt.originalEvent will be undefined. however, if this value + // was changed by a user-initiated event, then this code should be + // executed ... + if (evt.originalEvent) { + myViz.renderStep(ui.value); + } + }); + + if (this.params.startingInstruction) { + // weird special case for something like: + // e=raw_input(raw_input("Enter something:")) + if (this.params.startingInstruction == this.curTrace.length) { + this.params.startingInstruction--; + } + + assert(0 <= this.params.startingInstruction && + this.params.startingInstruction < this.curTrace.length); + this.curInstr = this.params.startingInstruction; + } + + if (this.params.jumpToEnd) { + this.curInstr = this.curTrace.length - 1; + } + + if (this.params.hideCode) { + this.domRoot.find('#vizLayoutTdFirst').hide(); // gigantic hack! + } + + try_hook("end_render", {myViz:this}); + + this.precomputeCurTraceLayouts(); + + if (!this.params.hideCode) { + this.renderPyCodeOutput(); + } + + // EXPERIMENTAL! + if (this.tabularView) { + this.renderTabularView(); + + // scroll vizLayoutTdFirst down to always align with the vertical + // scrolling ... + $(window).scroll(function() { + var codePane = myViz.domRoot.find('#vizLayoutTdFirst'); + var docScrollTop = $(document).scrollTop(); + var offset = codePane.offset().top; + var delta = docScrollTop - offset; + if (delta < 0) { + delta = 0; + } + + // don't scroll past the bottom of the optTabularView table: + var optTable = myViz.domRoot.find('#optTabularView'); + var optTableBottom = optTable.height() + optTable.offset().top; + var codeDisplayHeight = myViz.domRoot.find('#codeDisplayDiv').height(); + if (delta - offset < optTableBottom - codeDisplayHeight) { + codePane.css('padding-top', delta); + } + }); + } + + + var ruiDiv = myViz.domRoot.find('#rawUserInputDiv'); + ruiDiv.find('#userInputPromptStr').html(myViz.userInputPromptStr); + ruiDiv.find('#raw_input_submit_btn').click(function() { + var userInput = ruiDiv.find('#raw_input_textbox').val(); + // advance instruction count by 1 to get to the NEXT instruction + myViz.executeCodeWithRawInputFunc(userInput, myViz.curInstr + 1); + }); + + + this.updateOutput(); + + this.hasRendered = true; +} + + +ExecutionVisualizer.prototype.showVizHeaderViewMode = function() { + var titleVal = this.domRoot.find('#vizTitleEditor').val().trim(); + var descVal = this.domRoot.find('#vizDescriptionEditor').val().trim(); + + this.domRoot.find('#vizTitleEditor,#vizDescriptionEditor').hide(); + + if (!titleVal && !descVal) { + this.domRoot.find('#vizHeader').hide(); + } + else { + this.domRoot.find('#vizHeader,#vizTitleViewer,#vizDescriptionViewer').show(); + if (titleVal) { + this.domRoot.find('#vizTitleViewer').html(htmlsanitize(titleVal)); // help prevent HTML/JS injection attacks + } + + if (descVal) { + this.domRoot.find('#vizDescriptionViewer').html(htmlsanitize(descVal)); // help prevent HTML/JS injection attacks + } + } +} + +ExecutionVisualizer.prototype.showVizHeaderEditMode = function() { + this.domRoot.find('#vizHeader').show(); + + this.domRoot.find('#vizTitleViewer,#vizDescriptionViewer').hide(); + this.domRoot.find('#vizTitleEditor,#vizDescriptionEditor').show(); +} + + +ExecutionVisualizer.prototype.destroyAllAnnotationBubbles = function() { + var myViz = this; + + // hopefully destroys all old bubbles and reclaims their memory + if (myViz.allAnnotationBubbles) { + $.each(myViz.allAnnotationBubbles, function(i, e) { + e.destroyQTip(); + }); + } + + // remove this handler as well! + this.domRoot.find('#pyCodeOutputDiv').unbind('scroll'); + + myViz.allAnnotationBubbles = null; +} + +ExecutionVisualizer.prototype.initStepAnnotation = function() { + var curEntry = this.curTrace[this.curInstr]; + if (curEntry.stepAnnotation) { + this.domRoot.find("#stepAnnotationViewer").html(htmlsanitize(curEntry.stepAnnotation)); // help prevent HTML/JS injection attacks + this.domRoot.find("#stepAnnotationEditor").val(curEntry.stepAnnotation); + } + else { + this.domRoot.find("#stepAnnotationViewer").html(''); + this.domRoot.find("#stepAnnotationEditor").val(''); + } +} + +ExecutionVisualizer.prototype.initAllAnnotationBubbles = function() { + var myViz = this; + + // TODO: check for memory leaks + //console.log('initAllAnnotationBubbles'); + + myViz.destroyAllAnnotationBubbles(); + + var codelineIDs = []; + $.each(this.domRoot.find('#pyCodeOutput .cod'), function(i, e) { + codelineIDs.push($(e).attr('id')); + }); + + var heapObjectIDs = []; + $.each(this.domRoot.find('.heapObject'), function(i, e) { + heapObjectIDs.push($(e).attr('id')); + }); + + var variableIDs = []; + $.each(this.domRoot.find('.variableTr'), function(i, e) { + variableIDs.push($(e).attr('id')); + }); + + var frameIDs = []; + $.each(this.domRoot.find('.stackFrame'), function(i, e) { + frameIDs.push($(e).attr('id')); + }); + + myViz.allAnnotationBubbles = []; + + $.each(codelineIDs, function(i,e) {myViz.allAnnotationBubbles.push(new AnnotationBubble(myViz, 'codeline', e));}); + $.each(heapObjectIDs, function(i,e) {myViz.allAnnotationBubbles.push(new AnnotationBubble(myViz, 'object', e));}); + $.each(variableIDs, function(i,e) {myViz.allAnnotationBubbles.push(new AnnotationBubble(myViz, 'variable', e));}); + $.each(frameIDs, function(i,e) {myViz.allAnnotationBubbles.push(new AnnotationBubble(myViz, 'frame', e));}); + + + this.domRoot.find('#pyCodeOutputDiv').scroll(function() { + $.each(myViz.allAnnotationBubbles, function(i, e) { + if (e.type == 'codeline') { + e.redrawCodelineBubble(); + } + }); + }); + + //console.log('initAllAnnotationBubbles', myViz.allAnnotationBubbles.length); +} + + +ExecutionVisualizer.prototype.enterViewAnnotationsMode = function() { + this.editAnnotationMode = false; + var curEntry = this.curTrace[this.curInstr]; + + // TODO: check for memory leaks!!! + var myViz = this; + + if (!myViz.allAnnotationBubbles) { + if (curEntry.bubbleAnnotations) { + // If there is an existing annotations object, then initiate all annotations bubbles + // and display them in 'View' mode + myViz.initAllAnnotationBubbles(); + + $.each(myViz.allAnnotationBubbles, function(i, e) { + var txt = curEntry.bubbleAnnotations[e.domID]; + if (txt) { + e.preseedText(txt); + } + }); + } + } + + + if (myViz.allAnnotationBubbles) { + var curAnnotations = {}; + + $.each(myViz.allAnnotationBubbles, function(i, e) { + e.enterViewMode(); + + if (e.text) { + curAnnotations[e.domID] = e.text; + } + }); + + // Save annotations directly into the current trace entry as an 'annotations' object + // directly mapping domID -> text. + // + // NB: This scheme can break if the functions for generating domIDs are altered. + curEntry.bubbleAnnotations = curAnnotations; + } + + var stepAnnotationEditorVal = myViz.domRoot.find("#stepAnnotationEditor").val().trim(); + if (stepAnnotationEditorVal) { + curEntry.stepAnnotation = stepAnnotationEditorVal; + } + else { + delete curEntry.stepAnnotation; // go as far as to DELETE this field entirely + } + + myViz.initStepAnnotation(); + + myViz.showVizHeaderViewMode(); + + // redraw all connectors and bubbles in new vertical position .. + myViz.redrawConnectors(); + myViz.redrawAllAnnotationBubbles(); +} + +ExecutionVisualizer.prototype.enterEditAnnotationsMode = function() { + this.editAnnotationMode = true; + + // TODO: check for memory leaks!!! + var myViz = this; + + var curEntry = this.curTrace[this.curInstr]; + + if (!myViz.allAnnotationBubbles) { + myViz.initAllAnnotationBubbles(); + } + + $.each(myViz.allAnnotationBubbles, function(i, e) { + e.enterEditMode(); + }); + + + if (curEntry.stepAnnotation) { + myViz.domRoot.find("#stepAnnotationEditor").val(curEntry.stepAnnotation); + } + else { + myViz.domRoot.find("#stepAnnotationEditor").val(''); + } + + + myViz.showVizHeaderEditMode(); + + // redraw all connectors and bubbles in new vertical position .. + myViz.redrawConnectors(); + myViz.redrawAllAnnotationBubbles(); +} + + +ExecutionVisualizer.prototype.redrawAllAnnotationBubbles = function() { + if (this.allAnnotationBubbles) { + $.each(this.allAnnotationBubbles, function(i, e) { + e.redrawBubble(); + }); + } +} + + +// find the previous/next breakpoint to c or return -1 if it doesn't exist +ExecutionVisualizer.prototype.findPrevBreakpoint = function() { + var myViz = this; + var c = myViz.curInstr; + + if (myViz.sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 1; i < myViz.sortedBreakpointsList.length; i++) { + var prev = myViz.sortedBreakpointsList[i-1]; + var cur = myViz.sortedBreakpointsList[i]; + if (c <= prev) + return -1; + if (cur >= c) + return prev; + } + + // final edge case: + var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; + return (lastElt < c) ? lastElt : -1; + } +} + +ExecutionVisualizer.prototype.findNextBreakpoint = function() { + var myViz = this; + var c = myViz.curInstr; + + if (myViz.sortedBreakpointsList.length == 0) { + return -1; + } + // usability hack: if you're currently on a breakpoint, then + // single-step forward to the next execution point, NOT the next + // breakpoint. it's often useful to see what happens when the line + // at a breakpoint executes. + else if ($.inArray(c, myViz.sortedBreakpointsList) >= 0) { + return c + 1; + } + else { + for (var i = 0; i < myViz.sortedBreakpointsList.length - 1; i++) { + var cur = myViz.sortedBreakpointsList[i]; + var next = myViz.sortedBreakpointsList[i+1]; + if (c < cur) + return cur; + if (cur <= c && c < next) // subtle + return next; + } + + // final edge case: + var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; + return (lastElt > c) ? lastElt : -1; + } +} + + +// returns true if action successfully taken +ExecutionVisualizer.prototype.stepForward = function() { + var myViz = this; + + if (myViz.editAnnotationMode) { + return; + } + + if (myViz.curInstr < myViz.curTrace.length - 1) { + // if there is a next breakpoint, then jump to it ... + if (myViz.sortedBreakpointsList.length > 0) { + var nextBreakpoint = myViz.findNextBreakpoint(); + if (nextBreakpoint != -1) + myViz.curInstr = nextBreakpoint; + else + myViz.curInstr += 1; // prevent "getting stuck" on a solitary breakpoint + } + else { + myViz.curInstr += 1; + } + myViz.updateOutput(true); + return true; + } + + return false; +} + +// returns true if action successfully taken +ExecutionVisualizer.prototype.stepBack = function() { + var myViz = this; + + if (myViz.editAnnotationMode) { + return; + } + + if (myViz.curInstr > 0) { + // if there is a prev breakpoint, then jump to it ... + if (myViz.sortedBreakpointsList.length > 0) { + var prevBreakpoint = myViz.findPrevBreakpoint(); + if (prevBreakpoint != -1) + myViz.curInstr = prevBreakpoint; + else + myViz.curInstr -= 1; // prevent "getting stuck" on a solitary breakpoint + } + else { + myViz.curInstr -= 1; + } + myViz.updateOutput(); + return true; + } + + return false; +} + + +ExecutionVisualizer.prototype.renderPyCodeOutput = function() { + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + + // initialize! + this.breakpoints = d3.map(); + this.sortedBreakpointsList = []; + this.hoverBreakpoints = d3.map(); + + // an array of objects with the following fields: + // 'text' - the text of the line of code + // 'lineNumber' - one-indexed (always the array index + 1) + // 'executionPoints' - an ordered array of zero-indexed execution points where this line was executed + // 'breakpointHere' - has a breakpoint been set here? + this.codeOutputLines = []; + + + function renderSliderBreakpoints() { + myViz.domRoot.find("#executionSliderFooter").empty(); + + // I originally didn't want to delete and re-create this overlay every time, + // but if I don't do so, there are weird flickering artifacts with clearing + // the SVG container; so it's best to just delete and re-create the container each time + var sliderOverlay = myViz.domRootD3.select('#executionSliderFooter') + .append('svg') + .attr('id', 'sliderOverlay') + .attr('width', myViz.domRoot.find('#executionSlider').width()) + .attr('height', 12); + + var xrange = d3.scale.linear() + .domain([0, myViz.curTrace.length - 1]) + .range([0, myViz.domRoot.find('#executionSlider').width()]); + + sliderOverlay.selectAll('rect') + .data(myViz.sortedBreakpointsList) + .enter().append('rect') + .attr('x', function(d, i) { + // make the edge cases look decent + if (d == 0) { + return 0; + } + else { + return xrange(d) - 3; + } + }) + .attr('y', 0) + .attr('width', 2) + .attr('height', 12) + .style('fill', function(d) { + if (myViz.hoverBreakpoints.has(d)) { + return hoverBreakpointColor; + } + else { + return breakpointColor; + } + }); + } + + function _getSortedBreakpointsList() { + var ret = []; + myViz.breakpoints.forEach(function(k, v) { + ret.push(Number(k)); // these should be NUMBERS, not strings + }); + ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! + return ret; + } + + function addToBreakpoints(executionPoints) { + $.each(executionPoints, function(i, ep) { + myViz.breakpoints.set(ep, 1); + }); + myViz.sortedBreakpointsList = _getSortedBreakpointsList(); + } + + function removeFromBreakpoints(executionPoints) { + $.each(executionPoints, function(i, ep) { + myViz.breakpoints.remove(ep); + }); + myViz.sortedBreakpointsList = _getSortedBreakpointsList(); + } + + + function setHoverBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + myViz.hoverBreakpoints = d3.map(); + $.each(exePts, function(i, ep) { + // don't add redundant entries + if (!myViz.breakpoints.has(ep)) { + myViz.hoverBreakpoints.set(ep, 1); + } + }); + + addToBreakpoints(exePts); + renderSliderBreakpoints(); + } + + + function setBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + addToBreakpoints(exePts); + + // remove from hoverBreakpoints so that slider display immediately changes color + $.each(exePts, function(i, ep) { + myViz.hoverBreakpoints.remove(ep); + }); + + d3.select(t.parentNode).select('td.lineNo').style('color', breakpointColor); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); + + renderSliderBreakpoints(); + } + + function unsetBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + removeFromBreakpoints(exePts); + + var lineNo = d3.select(t).datum().lineNumber; + + renderSliderBreakpoints(); + } + + var lines = this.curInputCode.split('\n'); + + for (var i = 0; i < lines.length; i++) { + var cod = lines[i]; + + var n = {}; + n.text = cod; + n.lineNumber = i + 1; + n.executionPoints = []; + n.breakpointHere = false; + + $.each(this.curTrace, function(j, elt) { + if (elt.line == n.lineNumber) { + n.executionPoints.push(j); + } + }); + + + // if there is a comment containing 'breakpoint' and this line was actually executed, + // then set a breakpoint on this line + var breakpointInComment = false; + var toks = cod.split('#'); + for (var j = 1 /* start at index 1, not 0 */; j < toks.length; j++) { + if (toks[j].indexOf('breakpoint') != -1) { + breakpointInComment = true; + } + } + + if (breakpointInComment && n.executionPoints.length > 0) { + n.breakpointHere = true; + addToBreakpoints(n.executionPoints); + } + + this.codeOutputLines.push(n); + } + + + myViz.domRoot.find('#pyCodeOutputDiv').empty(); + + // maps this.codeOutputLines to both table columns + var codeOutputD3 = this.domRootD3.select('#pyCodeOutputDiv') + .append('table') + .attr('id', 'pyCodeOutput') + .selectAll('tr') + .data(this.codeOutputLines) + .enter().append('tr') + .selectAll('td') + .data(function(d, i){return [d, d] /* map full data item down both columns */;}) + .enter().append('td') + .attr('class', function(d, i) { + if (i == 0) { + return 'lineNo'; + } + else { + return 'cod'; + } + }) + .attr('id', function(d, i) { + if (i == 0) { + return 'lineNo' + d.lineNumber; + } + else { + return myViz.generateID('cod' + d.lineNumber); // make globally unique (within the page) + } + }) + .html(function(d, i) { + if (i == 0) { + return d.lineNumber; + } + else { + return htmlspecialchars(d.text); + } + }); + + // create a left-most gutter td that spans ALL rows ... + // (NB: valign="top" is CRUCIAL for this to work in IE) + if (myViz.params.arrowLines) { + myViz.domRoot.find('#pyCodeOutput tr:first') + .prepend(''); + + // create prevLineArrow and curLineArrow + myViz.domRootD3.select('svg#leftCodeGutterSVG') + .append('polygon') + .attr('id', 'prevLineArrow') + .attr('points', SVG_ARROW_POLYGON) + .attr('fill', lightArrowColor); + + myViz.domRootD3.select('svg#leftCodeGutterSVG') + .append('polygon') + .attr('id', 'curLineArrow') + .attr('points', SVG_ARROW_POLYGON) + .attr('fill', darkArrowColor); + } + + // 2012-09-05: Disable breakpoints for now to simplify UX + /* + if (!this.params.embeddedMode) { + codeOutputD3.style('cursor', function(d, i) {return 'pointer'}) + .on('mouseover', function() { + setHoverBreakpoint(this); + }) + .on('mouseout', function() { + myViz.hoverBreakpoints = d3.map(); + + var breakpointHere = d3.select(this).datum().breakpointHere; + + if (!breakpointHere) { + unsetBreakpoint(this); + } + + renderSliderBreakpoints(); // get rid of hover breakpoint colors + }) + .on('mousedown', function() { + // don't do anything if exePts is empty + // (i.e., this line was never executed) + var exePts = d3.select(this).datum().executionPoints; + if (!exePts || exePts.length == 0) { + return; + } + + // toggle breakpoint + d3.select(this).datum().breakpointHere = !d3.select(this).datum().breakpointHere; + + var breakpointHere = d3.select(this).datum().breakpointHere; + if (breakpointHere) { + setBreakpoint(this); + } + else { + unsetBreakpoint(this); + } + }); + + renderSliderBreakpoints(); // renders breakpoints written in as code comments + } + */ + +} + + +// takes a string inputStr and returns an HTML version with +// the characters from [highlightIndex, highlightIndex+extent) highlighted with +// a span of class highlightCssClass +function htmlWithHighlight(inputStr, highlightInd, extent, highlightCssClass) { + var prefix = ''; + if (highlightInd > 0) { + prefix = inputStr.slice(0, highlightInd); + } + + var highlightedChars = inputStr.slice(highlightInd, highlightInd + extent); + + var suffix = ''; + if (highlightInd + extent < inputStr.length) { + suffix = inputStr.slice(highlightInd + extent, inputStr.length); + } + + // ... then set the current line to lineHTML + var lineHTML = htmlspecialchars(prefix) + + '' + + htmlspecialchars(highlightedChars) + + '' + + htmlspecialchars(suffix); + return lineHTML; +} + + +// This function is called every time the display needs to be updated +// smoothTransition is OPTIONAL! +ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { + if (this.params.hideCode) { + this.updateOutputMini(); + } + else { + this.updateOutputFull(smoothTransition); + } + try_hook("end_updateOutput", {myViz:this}); +} + +ExecutionVisualizer.prototype.updateOutputFull = function(smoothTransition) { + assert(this.curTrace); + assert(!this.params.hideCode); + + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + // there's no point in re-rendering if this pane isn't even visible in the first place! + if (!myViz.domRoot.is(':visible')) { + return; + } + + + // really nitpicky!!! gets the difference in width between the code display + // and the maximum width of its enclosing div + myViz.codeHorizontalOverflow = myViz.domRoot.find('#pyCodeOutput').width() - myViz.domRoot.find('#pyCodeOutputDiv').width(); + // should always be positive + if (myViz.codeHorizontalOverflow < 0) { + myViz.codeHorizontalOverflow = 0; + } + + + // crucial resets for annotations (TODO: kludgy) + myViz.destroyAllAnnotationBubbles(); + myViz.initStepAnnotation(); + + + var prevDataVizHeight = myViz.domRoot.find('#dataViz').height(); + + + var gutterSVG = myViz.domRoot.find('svg#leftCodeGutterSVG'); + + // one-time initialization of the left gutter + // (we often can't do this earlier since the entire pane + // might be invisible and hence returns a height of zero or NaN + // -- the exact format depends on browser) + if (!myViz.leftGutterSvgInitialized && myViz.params.arrowLines) { + // set the gutter's height to match that of its parent + gutterSVG.height(gutterSVG.parent().height()); + + var firstRowOffsetY = myViz.domRoot.find('table#pyCodeOutput tr:first').offset().top; + + // first take care of edge case when there's only one line ... + myViz.codeRowHeight = myViz.domRoot.find('table#pyCodeOutput td.cod:first').height(); + + // ... then handle the (much more common) multi-line case ... + // this weird contortion is necessary to get the accurate row height on Internet Explorer + // (simpler methods work on all other major browsers, erghhhhhh!!!) + if (this.codeOutputLines && this.codeOutputLines.length > 1) { + var secondRowOffsetY = myViz.domRoot.find('table#pyCodeOutput tr:nth-child(2)').offset().top; + myViz.codeRowHeight = secondRowOffsetY - firstRowOffsetY; + } + + assert(myViz.codeRowHeight > 0); + + var gutterOffsetY = gutterSVG.offset().top; + var teenyAdjustment = gutterOffsetY - firstRowOffsetY; + + // super-picky detail to adjust the vertical alignment of arrows so that they line up + // well with the pointed-to code text ... + // (if you want to manually adjust tableTop, then ~5 is a reasonable number) + myViz.arrowOffsetY = Math.floor((myViz.codeRowHeight / 2) - (SVG_ARROW_HEIGHT / 2)) - teenyAdjustment; + + myViz.leftGutterSvgInitialized = true; + } + + if (myViz.params.arrowLines) { + assert(myViz.arrowOffsetY !== undefined); + assert(myViz.codeRowHeight !== undefined); + assert(0 <= myViz.arrowOffsetY && myViz.arrowOffsetY <= myViz.codeRowHeight); + } + + // call the callback if necessary (BEFORE rendering) + if (this.params.updateOutputCallback) { + this.params.updateOutputCallback(this); + } + + + var curEntry = this.curTrace[this.curInstr]; + var hasError = false; + // bnm Render a question + if (curEntry.question) { + //alert(curEntry.question.text); + + $('#'+curEntry.question.div).modal({position:["25%","50%"]}); + } + + // render VCR controls: + var totalInstrs = this.curTrace.length; + + var isLastInstr = (this.curInstr == (totalInstrs-1)); + + var vcrControls = myViz.domRoot.find("#vcrControls"); + + if (isLastInstr) { + if (this.promptForUserInput || this.promptForMouseInput) { + vcrControls.find("#curInstr").html('Enter user input:'); + } + else if (this.instrLimitReached) { + vcrControls.find("#curInstr").html("Instruction limit reached"); + } + else { + vcrControls.find("#curInstr").html("Program terminated"); + } + } + else { + vcrControls.find("#curInstr").html("Step " + + String(this.curInstr + 1) + + " of " + String(totalInstrs-1)); + } + + + vcrControls.find("#jmpFirstInstr").attr("disabled", false); + vcrControls.find("#jmpStepBack").attr("disabled", false); + vcrControls.find("#jmpStepFwd").attr("disabled", false); + vcrControls.find("#jmpLastInstr").attr("disabled", false); + + if (this.curInstr == 0) { + vcrControls.find("#jmpFirstInstr").attr("disabled", true); + vcrControls.find("#jmpStepBack").attr("disabled", true); + } + if (isLastInstr) { + vcrControls.find("#jmpLastInstr").attr("disabled", true); + vcrControls.find("#jmpStepFwd").attr("disabled", true); + } + + + // PROGRAMMATICALLY change the value, so evt.originalEvent should be undefined + myViz.domRoot.find('#executionSlider').slider('value', this.curInstr); + + + // render error (if applicable): + if (curEntry.event == 'exception' || + curEntry.event == 'uncaught_exception') { + assert(curEntry.exception_msg); + + if (curEntry.exception_msg == "Unknown error") { + myViz.domRoot.find("#errorOutput").html('Unknown error: Please email a bug report to philip@pgbovine.net'); + } + else { + myViz.domRoot.find("#errorOutput").html(htmlspecialchars(curEntry.exception_msg)); + } + + myViz.domRoot.find("#errorOutput").show(); + + hasError = true; + } + else { + if (!this.instrLimitReached) { // ugly, I know :/ + myViz.domRoot.find("#errorOutput").hide(); + } + } + + + function highlightCodeLine() { + /* if instrLimitReached, then treat like a normal non-terminating line */ + var isTerminated = (!myViz.instrLimitReached && isLastInstr); + + var pcod = myViz.domRoot.find('#pyCodeOutputDiv'); + + var curLineNumber = null; + var prevLineNumber = null; + + // only relevant if in myViz.pyCrazyMode + var prevColumn = undefined; + var prevExprStartCol = undefined; + var prevExprWidth = undefined; + + var curIsReturn = (curEntry.event == 'return'); + var prevIsReturn = false; + + + if (myViz.curInstr > 0) { + prevLineNumber = myViz.curTrace[myViz.curInstr - 1].line; + prevIsReturn = (myViz.curTrace[myViz.curInstr - 1].event == 'return'); + + /* kinda nutsy hack: if the previous line is a return line, don't + highlight it. instead, highlight the line in the enclosing + function that called this one (i.e., the call site). e.g.,: + + 1. def foo(lst): + 2. return len(lst) + 3. + 4. y = foo([1,2,3]) + 5. print y + + If prevLineNumber is 2 and prevIsReturn, then curLineNumber is + 5, since that's the line that executes right after line 2 + finishes. However, this looks confusing to the user since what + actually happened here was that the return value of foo was + assigned to y on line 4. I want to have prevLineNumber be line + 4 so that it gets highlighted. There's no ideal solution, but I + think that looks more sensible, since line 4 was the previous + line that executed *in this function's frame*. + */ + if (prevIsReturn) { + var idx = myViz.curInstr - 1; + var retStack = myViz.curTrace[idx].stack_to_render; + assert(retStack.length > 0); + var retFrameId = retStack[retStack.length - 1].frame_id; + + // now go backwards until we find a 'call' to this frame + while (idx >= 0) { + var entry = myViz.curTrace[idx]; + if (entry.event == 'call' && entry.stack_to_render) { + var topFrame = entry.stack_to_render[entry.stack_to_render.length - 1]; + if (topFrame.frame_id == retFrameId) { + break; // DONE, we found the call that corresponds to this return + } + } + idx--; + } + + // now idx is the index of the 'call' entry. we need to find the + // entry before that, which is the instruction before the call. + // THAT's the line of the call site. + if (idx > 0) { + var callingEntry = myViz.curTrace[idx - 1]; + prevLineNumber = callingEntry.line; // WOOHOO!!! + prevIsReturn = false; // this is now a call site, not a return + smoothTransition = false; + } + } + + if (myViz.pyCrazyMode) { + var p = myViz.curTrace[myViz.curInstr - 1]; + prevColumn = p.column; + // if these don't exist, set reasonable defaults + prevExprStartCol = (p.expr_start_col !== undefined) ? p.expr_start_col : p.column; + prevExprWidth = (p.expr_width !== undefined) ? p.expr_width : 1; + } + } + + curLineNumber = curEntry.line; + + if (myViz.pyCrazyMode) { + var curColumn = curEntry.column; + + // if these don't exist, set reasonable defaults + var curExprStartCol = (curEntry.expr_start_col !== undefined) ? curEntry.expr_start_col : curColumn; + var curExprWidth = (curEntry.expr_width !== undefined) ? curEntry.expr_width : 1; + + var curLineInfo = myViz.codeOutputLines[curLineNumber - 1]; + assert(curLineInfo.lineNumber == curLineNumber); + var codeAtLine = curLineInfo.text; + + // shotgun approach: reset ALL lines to their natural (unbolded) state + $.each(myViz.codeOutputLines, function(i, e) { + var d = myViz.generateID('cod' + e.lineNumber); + myViz.domRoot.find('#' + d).html(htmlspecialchars(e.text)); + }); + + + // Three possible cases: + // 1. previous and current trace entries are on the SAME LINE + // 2. previous and current trace entries are on different lines + // 3. there is no previous trace entry + + if (prevLineNumber == curLineNumber) { + var curLineHTML = ''; + + // tricky tricky! + // generate a combined line with both previous and current + // columns highlighted + + for (var i = 0; i < codeAtLine.length; i++) { + var isCur = (curExprStartCol <= i) && (i < curExprStartCol + curExprWidth); + var isPrev = (prevExprStartCol <= i) && (i < prevExprStartCol + prevExprWidth); + + var htmlEscapedChar = htmlspecialchars(codeAtLine[i]); + + if (isCur && isPrev) { + curLineHTML += '' + htmlEscapedChar + ''; + } + else if (isPrev) { + curLineHTML += '' + htmlEscapedChar + ''; + } + else if (isCur) { + curLineHTML += '' + htmlEscapedChar + ''; + } + else { + curLineHTML += htmlEscapedChar; + } + } + + assert(curLineHTML); + myViz.domRoot.find('#' + myViz.generateID('cod' + curLineNumber)).html(curLineHTML); + } + else { + if (prevLineNumber) { + var prevLineInfo = myViz.codeOutputLines[prevLineNumber - 1]; + var prevLineHTML = htmlWithHighlight(prevLineInfo.text, prevExprStartCol, prevExprWidth, 'pycrazy-highlight-prev'); + myViz.domRoot.find('#' + myViz.generateID('cod' + prevLineNumber)).html(prevLineHTML); + } + var curLineHTML = htmlWithHighlight(codeAtLine, curExprStartCol, curExprWidth, 'pycrazy-highlight-cur'); + myViz.domRoot.find('#' + myViz.generateID('cod' + curLineNumber)).html(curLineHTML); + } + } + + // on 'return' events, give a bit more of a vertical nudge to show that + // the arrow is aligned with the 'bottom' of the line ... + var prevVerticalNudge = prevIsReturn ? Math.floor(myViz.codeRowHeight / 2) : 0; + var curVerticalNudge = curIsReturn ? Math.floor(myViz.codeRowHeight / 2) : 0; + + + // edge case for the final instruction :0 + if (isTerminated && !hasError) { + // don't show redundant arrows on the same line when terminated ... + if (prevLineNumber == curLineNumber) { + curLineNumber = null; + } + // otherwise have a smaller vertical nudge (to fit at bottom of display table) + else { + curVerticalNudge = curVerticalNudge - 2; + } + } + + if (myViz.params.arrowLines) { + if (prevLineNumber) { + var pla = myViz.domRootD3.select('#prevLineArrow'); + var translatePrevCmd = 'translate(0, ' + (((prevLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + prevVerticalNudge) + ')'; + + if (smoothTransition) { + pla + .transition() + .duration(200) + .attr('fill', 'white') + .each('end', function() { + pla + .attr('transform', translatePrevCmd) + .attr('fill', lightArrowColor); + + gutterSVG.find('#prevLineArrow').show(); // show at the end to avoid flickering + }); + } + else { + pla.attr('transform', translatePrevCmd) + gutterSVG.find('#prevLineArrow').show(); + } + + } + else { + gutterSVG.find('#prevLineArrow').hide(); + } + + if (curLineNumber) { + var cla = myViz.domRootD3.select('#curLineArrow'); + var translateCurCmd = 'translate(0, ' + (((curLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + curVerticalNudge) + ')'; + + if (smoothTransition) { + cla + .transition() + .delay(200) + .duration(250) + .attr('transform', translateCurCmd); + } + else { + cla.attr('transform', translateCurCmd); + } + + gutterSVG.find('#curLineArrow').show(); + } + else { + gutterSVG.find('#curLineArrow').hide(); + } + } + + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') + .style('border-top', function(d) { + if (hasError && (d.lineNumber == curEntry.line)) { + return '1px solid ' + errorColor; + } + else { + return ''; + } + }) + .style('border-bottom', function(d) { + // COPY AND PASTE ALERT! + if (hasError && (d.lineNumber == curEntry.line)) { + return '1px solid ' + errorColor; + } + else { + return ''; + } + }); + + // returns True iff lineNo is visible in pyCodeOutputDiv + function isOutputLineVisible(lineNo) { + var lineNoTd = myViz.domRoot.find('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 30)); + } + + + // smoothly scroll pyCodeOutputDiv so that the given line is at the center + function scrollCodeOutputToLine(lineNo) { + var lineNoTd = myViz.domRoot.find('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); + + pcod.stop(); // first stop all previously-queued animations + pcod.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); + } + + if (myViz.params.highlightLines) { + myViz.domRoot.find('#pyCodeOutputDiv td.cod').removeClass('highlight-prev'); + myViz.domRoot.find('#pyCodeOutputDiv td.cod').removeClass('highlight-cur'); + if (curLineNumber) + myViz.domRoot.find('#'+myViz.generateID('cod'+curLineNumber)).addClass('highlight-cur'); + if (prevLineNumber) + myViz.domRoot.find('#'+myViz.generateID('cod'+prevLineNumber)).addClass('highlight-prev'); + } + + + // smoothly scroll code display + if (!isOutputLineVisible(curEntry.line)) { + scrollCodeOutputToLine(curEntry.line); + } + + } // end of highlightCodeLine + + + // render code output: + if (curEntry.line) { + highlightCodeLine(); + } + + // render stdout: + + // if there isn't anything in curEntry.stdout, don't even bother + // displaying the pane + if (curEntry.stdout) { + this.domRoot.find('#progOutputs').show(); + + // keep original horizontal scroll level: + var oldLeft = myViz.domRoot.find("#pyStdout").scrollLeft(); + myViz.domRoot.find("#pyStdout").val(curEntry.stdout); + + myViz.domRoot.find("#pyStdout").scrollLeft(oldLeft); + // scroll to bottom, though: + myViz.domRoot.find("#pyStdout").scrollTop(myViz.domRoot.find("#pyStdout")[0].scrollHeight); + } + else { + this.domRoot.find('#progOutputs').hide(); + } + + + // inject user-specified HTML/CSS/JS output: + // YIKES -- HUGE CODE INJECTION VULNERABILITIES :O + myViz.domRoot.find("#htmlOutputDiv").empty(); + if (curEntry.html_output) { + if (curEntry.css_output) { + myViz.domRoot.find("#htmlOutputDiv").append(''); + } + myViz.domRoot.find("#htmlOutputDiv").append(curEntry.html_output); + + // inject and run JS *after* injecting HTML and CSS + if (curEntry.js_output) { + // NB: when jQuery injects JS, it executes the code immediately + // and then removes the entire '); + } + } + + + // finally, render all of the data structures + var curEntry = this.curTrace[this.curInstr]; + var curToplevelLayout = this.curTraceLayouts[this.curInstr]; + this.renderDataStructures(curEntry, curToplevelLayout); + + this.enterViewAnnotationsMode(); // ... and render optional annotations (if any exist) + + + // call the callback if necessary (BEFORE rendering) + if (myViz.domRoot.find('#dataViz').height() != prevDataVizHeight) { + if (this.params.heightChangeCallback) { + this.params.heightChangeCallback(this); + } + } + + // handle raw user input + var ruiDiv = myViz.domRoot.find('#rawUserInputDiv'); + ruiDiv.hide(); // hide by default + + if (isLastInstr && myViz.executeCodeWithRawInputFunc) { + if (myViz.promptForUserInput) { + ruiDiv.show(); + } + } + +} // end of updateOutputFull + + +ExecutionVisualizer.prototype.updateOutputMini = function() { + assert(this.params.hideCode); + var curEntry = this.curTrace[this.curInstr]; + var curToplevelLayout = this.curTraceLayouts[this.curInstr]; + this.renderDataStructures(curEntry, curToplevelLayout); + + this.enterViewAnnotationsMode(); // ... and render optional annotations (if any exist) +} + + +ExecutionVisualizer.prototype.renderStep = function(step) { + assert(0 <= step); + assert(step < this.curTrace.length); + + // ignore redundant calls + if (this.curInstr == step) { + return; + } + + this.curInstr = step; + this.updateOutput(); +} + + +// Pre-compute the layout of top-level heap objects for ALL execution +// points as soon as a trace is first loaded. The reason why we want to +// do this is so that when the user steps through execution points, the +// heap objects don't "jiggle around" (i.e., preserving positional +// invariance). Also, if we set up the layout objects properly, then we +// can take full advantage of d3 to perform rendering and transitions. +ExecutionVisualizer.prototype.precomputeCurTraceLayouts = function() { + + // curTraceLayouts is a list of top-level heap layout "objects" with the + // same length as curTrace after it's been fully initialized. Each + // element of curTraceLayouts is computed from the contents of its + // immediate predecessor, thus ensuring that objects don't "jiggle + // around" between consecutive execution points. + // + // Each top-level heap layout "object" is itself a LIST of LISTS of + // object IDs, where each element of the outer list represents a row, + // and each element of the inner list represents columns within a + // particular row. Each row can have a different number of columns. Most + // rows have exactly ONE column (representing ONE object ID), but rows + // containing 1-D linked data structures have multiple columns. Each + // inner list element looks something like ['row1', 3, 2, 1] where the + // first element is a unique row ID tag, which is used as a key for d3 to + // preserve "object constancy" for updates, transitions, etc. The row ID + // is derived from the FIRST object ID inserted into the row. Since all + // object IDs are unique, all row IDs will also be unique. + + /* This is a good, simple example to test whether objects "jiggle" + + x = [1, [2, [3, None]]] + y = [4, [5, [6, None]]] + + x[1][1] = y[1] + + */ + this.curTraceLayouts = []; + this.curTraceLayouts.push([]); // pre-seed with an empty sentinel to simplify the code + + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + assert(this.curTrace.length > 0); + $.each(this.curTrace, function(i, curEntry) { + var prevLayout = myViz.curTraceLayouts[myViz.curTraceLayouts.length - 1]; + + // make a DEEP COPY of prevLayout to use as the basis for curLine + var curLayout = $.extend(true /* deep copy */ , [], prevLayout); + + // initialize with all IDs from curLayout + var idsToRemove = d3.map(); + $.each(curLayout, function(i, row) { + for (var j = 1 /* ignore row ID tag */; j < row.length; j++) { + idsToRemove.set(row[j], 1); + } + }); + + var idsAlreadyLaidOut = d3.map(); // to prevent infinite recursion + + function curLayoutIndexOf(id) { + for (var i = 0; i < curLayout.length; i++) { + var row = curLayout[i]; + var index = row.indexOf(id); + if (index > 0) { // index of 0 is impossible since it's the row ID tag + return {row: row, index: index} + } + } + return null; + } + + function isLinearObj(heapObj) { + var hook_result = try_hook("isLinearObj", {heapObj:heapObj}); + if (hook_result[0]) return hook_result[1]; + + return heapObj[0] == 'LIST' || heapObj[0] == 'TUPLE' || heapObj[0] == 'SET'; + } + + function recurseIntoObject(id, curRow, newRow) { + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are + // structurally identical and then lay them out as siblings in the same "row" + var heapObj = curEntry.heap[id]; + assert(heapObj); + + if (isLinearObj(heapObj)) { + $.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + if (!isPrimitiveType(child)) { + var childID = getRefID(child); + + // comment this out to make "linked lists" that aren't + // structurally equivalent look good, e.g.,: + // x = (1, 2, (3, 4, 5, 6, (7, 8, 9, None))) + //if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + // updateCurLayout(childID, curRow, newRow); + //} + if (myViz.disableHeapNesting) { + updateCurLayout(childID, [], []); + } + else { + updateCurLayout(childID, curRow, newRow); + } + } + }); + } + else if (heapObj[0] == 'DICT') { + $.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + if (myViz.disableHeapNesting) { + var dictKey = child[0]; + if (!isPrimitiveType(dictKey)) { + var keyChildID = getRefID(dictKey); + updateCurLayout(keyChildID, [], []); + } + } + + var dictVal = child[1]; + if (!isPrimitiveType(dictVal)) { + var childID = getRefID(dictVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + updateCurLayout(childID, curRow, newRow); + } + else if (myViz.disableHeapNesting) { + updateCurLayout(childID, [], []); + } + } + }); + } + else if (heapObj[0] == 'INSTANCE' || heapObj[0] == 'CLASS') { + jQuery.each(heapObj, function(ind, child) { + var headerLength = (heapObj[0] == 'INSTANCE') ? 2 : 3; + if (ind < headerLength) return; + + if (myViz.disableHeapNesting) { + var instKey = child[0]; + if (!isPrimitiveType(instKey)) { + var keyChildID = getRefID(instKey); + updateCurLayout(keyChildID, [], []); + } + } + + var instVal = child[1]; + if (!isPrimitiveType(instVal)) { + var childID = getRefID(instVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + updateCurLayout(childID, curRow, newRow); + } + else if (myViz.disableHeapNesting) { + updateCurLayout(childID, [], []); + } + } + }); + } + } + + + // a krazy function! + // id - the new object ID to be inserted somewhere in curLayout + // (if it's not already in there) + // curRow - a row within curLayout where new linked list + // elements can be appended onto (might be null) + // newRow - a new row that might be spliced into curRow or appended + // as a new row in curLayout + function updateCurLayout(id, curRow, newRow) { + if (idsAlreadyLaidOut.has(id)) { + return; // PUNT! + } + + var curLayoutLoc = curLayoutIndexOf(id); + + var alreadyLaidOut = idsAlreadyLaidOut.has(id); + idsAlreadyLaidOut.set(id, 1); // unconditionally set now + + // if id is already in curLayout ... + if (curLayoutLoc) { + var foundRow = curLayoutLoc.row; + var foundIndex = curLayoutLoc.index; + + idsToRemove.remove(id); // this id is already accounted for! + + // very subtle ... if id hasn't already been handled in + // this iteration, then splice newRow into foundRow. otherwise + // (later) append newRow onto curLayout as a truly new row + if (!alreadyLaidOut) { + // splice the contents of newRow right BEFORE foundIndex. + // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] + // to represent a linked list 3->2->1. You want to splice the 3 + // entry right before the 2 to form ['row1', 3, 2, 1]) + if (newRow.length > 1) { + var args = [foundIndex, 0]; + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + args.push(newRow[i]); + idsToRemove.remove(newRow[i]); + } + foundRow.splice.apply(foundRow, args); + + // remove ALL elements from newRow since they've all been accounted for + // (but don't reassign it away to an empty list, since the + // CALLER checks its value. TODO: how to get rid of this gross hack?!?) + newRow.splice(0, newRow.length); + } + } + + // recurse to find more top-level linked entries to append onto foundRow + recurseIntoObject(id, foundRow, []); + } + else { + // push id into newRow ... + if (newRow.length == 0) { + newRow.push('row' + id); // unique row ID (since IDs are unique) + } + newRow.push(id); + + // recurse to find more top-level linked entries ... + recurseIntoObject(id, curRow, newRow); + + + // if newRow hasn't been spliced into an existing row yet during + // a child recursive call ... + if (newRow.length > 0) { + if (curRow && curRow.length > 0) { + // append onto the END of curRow if it exists + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + curRow.push(newRow[i]); + } + } + else { + // otherwise push to curLayout as a new row + // + // TODO: this might not always look the best, since we might + // sometimes want to splice newRow in the MIDDLE of + // curLayout. Consider this example: + // + // x = [1,2,3] + // y = [4,5,6] + // x = [7,8,9] + // + // when the third line is executed, the arrows for x and y + // will be crossed (ugly!) since the new row for the [7,8,9] + // object is pushed to the end (bottom) of curLayout. The + // proper behavior is to push it to the beginning of + // curLayout where the old row for 'x' used to be. + curLayout.push($.extend(true /* make a deep copy */ , [], newRow)); + } + + // regardless, newRow is now accounted for, so clear it + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + idsToRemove.remove(newRow[i]); + } + newRow.splice(0, newRow.length); // kill it! + } + + } + } + + + // iterate through all globals and ordered stack frames and call updateCurLayout + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + if (val !== undefined) { // might not be defined at this line, which is OKAY! + if (!isPrimitiveType(val)) { + var id = getRefID(val); + updateCurLayout(id, null, []); + } + } + }); + + $.each(curEntry.stack_to_render, function(i, frame) { + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = frame.encoded_locals[varname]; + + if (!isPrimitiveType(val)) { + var id = getRefID(val); + updateCurLayout(id, null, []); + } + }); + }); + + + // iterate through remaining elements of idsToRemove and REMOVE them from curLayout + idsToRemove.forEach(function(id, xxx) { + id = Number(id); // keys are stored as strings, so convert!!! + $.each(curLayout, function(rownum, row) { + var ind = row.indexOf(id); + if (ind > 0) { // remember that index 0 of the row is the row ID tag + row.splice(ind, 1); + } + }); + }); + + // now remove empty rows (i.e., those with only a row ID tag) from curLayout + curLayout = curLayout.filter(function(row) {return row.length > 1}); + + myViz.curTraceLayouts.push(curLayout); + }); + + this.curTraceLayouts.splice(0, 1); // remove seeded empty sentinel element + assert (this.curTrace.length == this.curTraceLayouts.length); +} + + +var heapPtrSrcRE = /__heap_pointer_src_/; + + +var rightwardNudgeHack = true; // suggested by John DeNero, toggle with global + +// This is the main event here!!! +// +// The "4.0" version of renderDataStructures was refactored to be much +// less monolithic and more modular. It was made possible by first +// creating a suite of frontend JS regression tests so that I felt more +// comfortable mucking around with the super-brittle code in this +// function. This version was created in April 2014. For reference, +// before refactoring, this function was 1,030 lines of convoluted code! +// +// (Also added the rightward nudge hack to make tree-like structures +// look more sane without any sophisticated graph rendering code. Thanks +// to John DeNero for this suggestion all the way back in Fall 2012.) +// +// The "3.0" version of renderDataStructures renders variables in +// a stack, values in a separate heap, and draws line connectors +// to represent both stack->heap object references and, more importantly, +// heap->heap references. This version was created in August 2012. +// +// The "2.0" version of renderDataStructures renders variables in +// a stack and values in a separate heap, with data structure aliasing +// explicitly represented via line connectors (thanks to jsPlumb lib). +// This version was created in September 2011. +// +// The ORIGINAL "1.0" version of renderDataStructures +// was created in January 2010 and rendered variables and values +// INLINE within each stack frame without any explicit representation +// of data structure aliasing. That is, aliased objects were rendered +// multiple times, and a unique ID label was used to identify aliases. +ExecutionVisualizer.prototype.renderDataStructures = function(curEntry, curToplevelLayout) { + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + if (myViz.tabularView) { + return; // return EARLY!!! + } + + myViz.resetJsPlumbManager(); // very important!!! + + // for simplicity (but sacrificing some performance), delete all + // connectors and redraw them from scratch. doing so avoids mysterious + // jsPlumb connector alignment issues when the visualizer's enclosing + // div contains, say, a "position: relative;" CSS tag + // (which happens in the IPython Notebook) + var existingConnectionEndpointIDs = d3.map(); + myViz.jsPlumbInstance.select({scope: 'varValuePointer'}).each(function(c) { + // This is VERY crude, but to prevent multiple redundant HEAP->HEAP + // connectors from being drawn with the same source and origin, we need to first + // DELETE ALL existing HEAP->HEAP connections, and then re-render all of + // them in each call to this function. The reason why we can't safely + // hold onto them is because there's no way to guarantee that the + // *__heap_pointer_src_ IDs are consistent across execution points. + // + // thus, only add to existingConnectionEndpointIDs if this is NOT heap->heap + if (!c.sourceId.match(heapPtrSrcRE)) { + existingConnectionEndpointIDs.set(c.sourceId, c.targetId); + } + }); + + var existingParentPointerConnectionEndpointIDs = d3.map(); + myViz.jsPlumbInstance.select({scope: 'frameParentPointer'}).each(function(c) { + existingParentPointerConnectionEndpointIDs.set(c.sourceId, c.targetId); + }); + + + // Heap object rendering phase: + + // count everything in curToplevelLayout as already rendered since we will render them + // in d3 .each() statements + $.each(curToplevelLayout, function(xxx, row) { + for (var i = 0; i < row.length; i++) { + var objID = row[i]; + var heapObjID = myViz.generateHeapObjID(objID, myViz.curInstr); + myViz.jsPlumbManager.renderedHeapObjectIDs.set(heapObjID, 1); + } + }); + + + + // use d3 to render the heap by mapping curToplevelLayout into + // and '); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + $.each(obj, function(ind, val) { + if (ind < 1) return; // skip type tag and ID entry + + // add a new column and then pass in that newly-added column + // as d3DomElement to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 1); + + contentTr.append(''); + myViz.renderNestedObject(val, stepNum, contentTr.find('td:last')); + }); + } + else if (obj[0] == 'SET') { + // create an R x C matrix: + var numElts = obj.length - 1; + + // gives roughly a 3x5 rectangular ratio, square is too, err, + // 'square' and boring + var numRows = Math.round(Math.sqrt(numElts)); + if (numRows > 3) { + numRows -= 1; + } + + var numCols = Math.round(numElts / numRows); + // round up if not a perfect multiple: + if (numElts % numRows) { + numCols += 1; + } + + jQuery.each(obj, function(ind, val) { + if (ind < 1) return; // skip 'SET' tag + + if (((ind - 1) % numCols) == 0) { + tbl.append(''); + } + + var curTr = tbl.find('tr:last'); + curTr.append(''); + myViz.renderNestedObject(val, stepNum, curTr.find('td:last')); + }); + } + else if (obj[0] == 'DICT') { + $.each(obj, function(ind, kvPair) { + if (ind < 1) return; // skip 'DICT' tag + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + var key = kvPair[0]; + var val = kvPair[1]; + + myViz.renderNestedObject(key, stepNum, keyTd); + myViz.renderNestedObject(val, stepNum, valTd); + }); + } + } + } + else if (obj[0] == 'INSTANCE' || obj[0] == 'CLASS') { + var isInstance = (obj[0] == 'INSTANCE'); + var headerLength = isInstance ? 2 : 3; + + assert(obj.length >= headerLength); + + if (isInstance) { + d3DomElement.append('
      ' + typeLabelPrefix + obj[1] + ' instance
      '); + } + else { + var superclassStr = ''; + if (obj[2].length > 0) { + superclassStr += ('[extends ' + obj[2].join(', ') + '] '); + } + d3DomElement.append('
      ' + typeLabelPrefix + obj[1] + ' class ' + superclassStr + + '
      ' + 'hide attributes' + '
      '); + } + + // right now, let's NOT display class members, since that clutters + // up the display too much. in the future, consider displaying + // class members in a pop-up pane on mouseover or mouseclick + // actually nix what i just said above ... + //if (!isInstance) return; + + if (obj.length > headerLength) { + var lab = isInstance ? 'inst' : 'class'; + d3DomElement.append('
      elements + + // for simplicity, CLEAR this entire div every time, which totally + // gets rid of the incremental benefits of using d3 for, say, + // transitions or efficient updates. but it provides more + // deterministic and predictable output for other functions. sigh, i'm + // not really using d3 to the fullest, but oh wells! + myViz.domRoot.find('#heap') + .empty() + .html('
      Objects
      '); + + + var heapRows = myViz.domRootD3.select('#heap') + .selectAll('table.heapRow') + .attr('id', function(d, i){ return 'heapRow' + i; }) // add unique ID + .data(curToplevelLayout, function(objLst) { + return objLst[0]; // return first element, which is the row ID tag + }); + + + // insert new heap rows + heapRows.enter().append('table') + //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) + .attr('id', function(d, i){ return 'heapRow' + i; }) // add unique ID + .attr('class', 'heapRow'); + + // delete a heap row + var hrExit = heapRows.exit(); + hrExit + .each(function(d, idx) { + //console.log('DEL ROW:', d, idx); + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + + // update an existing heap row + var toplevelHeapObjects = heapRows + //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + .selectAll('td.toplevelHeapObject') + .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ + function(objID) {return objID;} /* each object ID is unique for constancy */); + + // insert a new toplevelHeapObject + var tlhEnter = toplevelHeapObjects.enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}); + + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + // update a toplevelHeapObject + toplevelHeapObjects + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .each(function(objID, i) { + //console.log('NEW/UPDATE ELT', objID); + + // TODO: add a smoother transition in the future + // Right now, just delete the old element and render a new one in its place + $(this).empty(); + myViz.renderCompoundObject(objID, myViz.curInstr, $(this), true); + }); + + // delete a toplevelHeapObject + var tlhExit = toplevelHeapObjects.exit(); + tlhExit + .each(function(d, idx) { + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + + // Render globals and then stack frames using d3: + + + // TODO: this sometimes seems buggy on Safari, so nix it for now: + function highlightAliasedConnectors(d, i) { + // if this row contains a stack pointer, then highlight its arrow and + // ALL aliases that also point to the same heap object + var stackPtrId = $(this).find('div.stack_pointer').attr('id'); + if (stackPtrId) { + var foundTargetId = null; + myViz.jsPlumbInstance.select({source: stackPtrId}).each(function(c) {foundTargetId = c.targetId;}); + + // use foundTargetId to highlight ALL ALIASES + myViz.jsPlumbInstance.select().each(function(c) { + if (c.targetId == foundTargetId) { + c.setHover(true); + $(c.canvas).css("z-index", 2000); // ... and move it to the VERY FRONT + } + else { + c.setHover(false); + } + }); + } + } + + function unhighlightAllConnectors(d, i) { + myViz.jsPlumbInstance.select().each(function(c) { + c.setHover(false); + }); + } + + + + // TODO: coalesce code for rendering globals and stack frames, + // since there's so much copy-and-paste grossness right now + + // render all global variables IN THE ORDER they were created by the program, + // in order to ensure continuity: + + // Derive a list where each element contains varname + // as long as value is NOT undefined. + // (Sometimes entries in curEntry.ordered_globals are undefined, + // so filter those out.) + var realGlobalsLst = []; + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + realGlobalsLst.push(varname); + } + }); + + var globalsID = myViz.generateID('globals'); + var globalTblID = myViz.generateID('global_table'); + + var globalVarTable = myViz.domRootD3.select('#' + globalTblID) + .selectAll('tr') + .data(realGlobalsLst, + function(d) {return d;} // use variable name as key + ); + + globalVarTable + .enter() + .append('tr') + .attr('class', 'variableTr') + .attr('id', function(d, i) { + return myViz.generateID(varnameToCssID('global__' + d + '_tr')); // make globally unique (within the page) + }); + + + var globalVarTableCells = globalVarTable + .selectAll('td.stackFrameVar,td.stackFrameValue') + .data(function(d, i){return [d, d];}) /* map varname down both columns */ + + globalVarTableCells.enter() + .append('td') + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}); + + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + // UPDATE + globalVarTableCells + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .each(function(varname, i) { + if (i == 0) { + $(this).html(varname); + } + else { + // always delete and re-render the global var ... + // NB: trying to cache and compare the old value using, + // say -- $(this).attr('data-curvalue', valStringRepr) -- leads to + // a mysterious and killer memory leak that I can't figure out yet + $(this).empty(); + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); + + // need to get rid of the old connector in preparation for rendering a new one: + existingConnectionEndpointIDs.remove(varDivID); + + var val = curEntry.globals[varname]; + if (isPrimitiveType(val)) { + myViz.renderPrimitiveObject(val, $(this)); + } + else { + var heapObjID = myViz.generateHeapObjID(getRefID(val), myViz.curInstr); + + if (myViz.textualMemoryLabels) { + var labelID = varDivID + '_text_label'; + $(this).append('
      id' + getRefID(val) + '
      '); + $(this).find('div#' + labelID).hover( + function() { + myViz.jsPlumbInstance.connect({source: labelID, target: heapObjID, + scope: 'varValuePointer'}); + }, + function() { + myViz.jsPlumbInstance.select({source: labelID}).detach(); + }); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + $(this).append('
       
      '); + + assert(!myViz.jsPlumbManager.connectionEndpointIDs.has(varDivID)); + myViz.jsPlumbManager.connectionEndpointIDs.set(varDivID, heapObjID); + //console.log('STACK->HEAP', varDivID, heapObjID); + } + } + } + }); + + + + globalVarTableCells.exit() + .each(function(d, idx) { + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + globalVarTable.exit() + .each(function(d, i) { + // detach all stack_pointer connectors for divs that are being removed + $(this).find('.stack_pointer').each(function(i, sp) { + existingConnectionEndpointIDs.remove($(sp).attr('id')); + }); + + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + + // for aesthetics, hide globals if there aren't any globals to display + if (curEntry.ordered_globals.length == 0) { + this.domRoot.find('#' + globalsID).hide(); + } + else { + this.domRoot.find('#' + globalsID).show(); + } + + + // holy cow, the d3 code for stack rendering is ABSOLUTELY NUTS! + + var stackDiv = myViz.domRootD3.select('#stack'); + + // VERY IMPORTANT for selectAll selector to be SUPER specific here! + var stackFrameDiv = stackDiv.selectAll('div.stackFrame,div.zombieStackFrame') + .data(curEntry.stack_to_render, function(frame) { + // VERY VERY VERY IMPORTANT for properly handling closures and nested functions + // (see the backend code for more details) + return frame.unique_hash; + }); + + var sfdEnter = stackFrameDiv.enter() + .append('div') + .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) + .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) + : myViz.generateID("stack" + i); + }) + // HTML5 custom data attributes + .attr('data-frame_id', function(frame, i) {return frame.frame_id;}) + .attr('data-parent_frame_id', function(frame, i) { + return (frame.parent_frame_id_list.length > 0) ? frame.parent_frame_id_list[0] : null; + }) + .each(function(frame, i) { + if (!myViz.drawParentPointers) { + return; + } + // only run if myViz.drawParentPointers is true ... + + var my_CSS_id = $(this).attr('id'); + + //console.log(my_CSS_id, 'ENTER'); + + // render a parent pointer whose SOURCE node is this frame + // i.e., connect this frame to p, where this.parent_frame_id == p.frame_id + // (if this.parent_frame_id is null, then p is the global frame) + if (frame.parent_frame_id_list.length > 0) { + var parent_frame_id = frame.parent_frame_id_list[0]; + // tricky turkey! + // ok this hack just HAPPENS to work by luck ... usually there will only be ONE frame + // that matches this selector, but sometimes multiple frames match, in which case the + // FINAL frame wins out (since parentPointerConnectionEndpointIDs is a map where each + // key can be mapped to only ONE value). it so happens that the final frame winning + // out looks "desirable" for some of the closure test cases that I've tried. but + // this code is quite brittle :( + myViz.domRoot.find('div#stack [data-frame_id=' + parent_frame_id + ']').each(function(i, e) { + var parent_CSS_id = $(this).attr('id'); + //console.log('connect', my_CSS_id, parent_CSS_id); + myViz.jsPlumbManager.parentPointerConnectionEndpointIDs.set(my_CSS_id, parent_CSS_id); + }); + } + else { + // render a parent pointer to the global frame + //console.log('connect', my_CSS_id, globalsID); + // only do this if there are actually some global variables to display ... + if (curEntry.ordered_globals.length > 0) { + myViz.jsPlumbManager.parentPointerConnectionEndpointIDs.set(my_CSS_id, globalsID); + } + } + + // tricky turkey: render parent pointers whose TARGET node is this frame. + // i.e., for all frames f such that f.parent_frame_id == my_frame_id, + // connect f to this frame. + // (make sure not to confuse frame IDs with CSS IDs!!!) + var my_frame_id = frame.frame_id; + myViz.domRoot.find('div#stack [data-parent_frame_id=' + my_frame_id + ']').each(function(i, e) { + var child_CSS_id = $(this).attr('id'); + //console.log('connect', child_CSS_id, my_CSS_id); + myViz.jsPlumbManager.parentPointerConnectionEndpointIDs.set(child_CSS_id, my_CSS_id); + }); + }); + + sfdEnter + .append('div') + .attr('class', 'stackFrameHeader') + .html(function(frame, i) { + + // pretty-print lambdas and display other weird characters + // (might contain '<' or '>' for weird names like ) + var funcName = htmlspecialchars(frame.func_name).replace('<lambda>', '\u03bb') + .replace('\n', '
      '); + + var headerLabel = funcName; + + // only display if you're someone's parent (unless showAllFrameLabels) + if (frame.is_parent || myViz.showAllFrameLabels) { + headerLabel = 'f' + frame.frame_id + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + else if (myViz.showAllFrameLabels) { + headerLabel = headerLabel + ' [parent=Global]'; + } + + return headerLabel; + }); + + sfdEnter + .append('table') + .attr('class', 'stackFrameVarTable'); + + + var stackVarTable = stackFrameDiv + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .select('table').selectAll('tr') + .data(function(frame) { + // each list element contains a reference to the entire frame + // object as well as the variable name + // TODO: look into whether we can use d3 parent nodes to avoid + // this hack ... http://bost.ocks.org/mike/nest/ + return frame.ordered_varnames.map(function(varname) {return {varname:varname, frame:frame};}); + }, + function(d) {return d.varname;} // use variable name as key + ); + + stackVarTable + .enter() + .append('tr') + .attr('class', 'variableTr') + .attr('id', function(d, i) { + return myViz.generateID(varnameToCssID(d.frame.unique_hash + '__' + d.varname + '_tr')); // make globally unique (within the page) + }); + + + var stackVarTableCells = stackVarTable + .selectAll('td.stackFrameVar,td.stackFrameValue') + .data(function(d, i) {return [d, d] /* map identical data down both columns */;}); + + stackVarTableCells.enter() + .append('td') + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}); + + stackVarTableCells + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .each(function(d, i) { + var varname = d.varname; + var frame = d.frame; + + if (i == 0) { + if (varname == '__return__') + $(this).html('Return
      value
      '); + else + $(this).html(varname); + } + else { + // always delete and re-render the stack var ... + // NB: trying to cache and compare the old value using, + // say -- $(this).attr('data-curvalue', valStringRepr) -- leads to + // a mysterious and killer memory leak that I can't figure out yet + $(this).empty(); + + // make sure varname and frame.unique_hash don't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = myViz.generateID(varnameToCssID(frame.unique_hash + '__' + varname)); + + // need to get rid of the old connector in preparation for rendering a new one: + existingConnectionEndpointIDs.remove(varDivID); + + var val = frame.encoded_locals[varname]; + if (isPrimitiveType(val)) { + myViz.renderPrimitiveObject(val, $(this)); + } + else { + var heapObjID = myViz.generateHeapObjID(getRefID(val), myViz.curInstr); + if (myViz.textualMemoryLabels) { + var labelID = varDivID + '_text_label'; + $(this).append('
      id' + getRefID(val) + '
      '); + $(this).find('div#' + labelID).hover( + function() { + myViz.jsPlumbInstance.connect({source: labelID, target: heapObjID, + scope: 'varValuePointer'}); + }, + function() { + myViz.jsPlumbInstance.select({source: labelID}).detach(); + }); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + $(this).append('
       
      '); + + assert(!myViz.jsPlumbManager.connectionEndpointIDs.has(varDivID)); + myViz.jsPlumbManager.connectionEndpointIDs.set(varDivID, heapObjID); + //console.log('STACK->HEAP', varDivID, heapObjID); + } + } + } + }); + + + stackVarTableCells.exit() + .each(function(d, idx) { + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + stackVarTable.exit() + .each(function(d, i) { + $(this).find('.stack_pointer').each(function(i, sp) { + // detach all stack_pointer connectors for divs that are being removed + existingConnectionEndpointIDs.remove($(sp).attr('id')); + }); + + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + stackFrameDiv.exit() + .each(function(frame, i) { + $(this).find('.stack_pointer').each(function(i, sp) { + // detach all stack_pointer connectors for divs that are being removed + existingConnectionEndpointIDs.remove($(sp).attr('id')); + }); + + var my_CSS_id = $(this).attr('id'); + + //console.log(my_CSS_id, 'EXIT'); + + // Remove all pointers where either the source or destination end is my_CSS_id + existingParentPointerConnectionEndpointIDs.forEach(function(k, v) { + if (k == my_CSS_id || v == my_CSS_id) { + //console.log('remove EPP', k, v); + existingParentPointerConnectionEndpointIDs.remove(k); + } + }); + + $(this).empty(); // crucial for garbage collecting jsPlumb connectors! + }) + .remove(); + + + // Rightward nudge hack to make tree-like structures look more sane + // without any sophisticated graph rendering code. Thanks to John + // DeNero for this suggestion in Fall 2012. + // + // This hack tries to ensure that all pointers that span different + // rows point RIGHTWARD (as much as possible), which makes tree-like + // structures look decent. e.g.,: + // + // t = [[['a', 'b'], ['c', 'd']], [[1,2], [3,4]]] + // + // Do it here since all of the divs have been rendered by now, but no + // jsPlumb arrows have been rendered yet. + if (rightwardNudgeHack) { + // Basic idea: keep a set of all nudged ROWS for each nudger row, so + // that when you get nudged, you can, in turn, nudge all of the rows + // that you've nudged. this algorithm nicely takes care of the fact + // that there might not be cycles in objects that you've nudged, but + // there are cycles in entire rows. + // + // Key: ID of .heapRow object that did the nudging + // Value: set of .heapRow ID that were (transitively) nudged by this element + // (represented as a d3.map) + var nudger_to_nudged_rows = {}; + + // VERY IMPORTANT to sort these connector IDs in ascending order, + // since I think they're rendered left-to-right, top-to-bottom in ID + // order, so we want to run the nudging algorithm in that same order. + var srcHeapConnectorIDs = myViz.jsPlumbManager.heapConnectionEndpointIDs.keys(); + srcHeapConnectorIDs.sort(); + + $.each(srcHeapConnectorIDs, function(i, srcID) { + var dstID = myViz.jsPlumbManager.heapConnectionEndpointIDs.get(srcID); + + var srcAnchorObject = myViz.domRoot.find('#' + srcID); + var srcHeapObject = srcAnchorObject.closest('.heapObject'); + var dstHeapObject = myViz.domRoot.find('#' + dstID); + assert(dstHeapObject.attr('class') == 'heapObject'); + + var srcHeapRow = srcHeapObject.closest('.heapRow'); + var dstHeapRow = dstHeapObject.closest('.heapRow'); + + var srcRowID = srcHeapRow.attr('id'); + var dstRowID = dstHeapRow.attr('id'); + + // only consider nudging if srcID and dstID are on different rows + if (srcRowID != dstRowID) { + var srcAnchorLeft = srcAnchorObject.offset().left; + var srcHeapObjectLeft = srcHeapObject.offset().left; + var dstHeapObjectLeft = dstHeapObject.offset().left; + + // if srcAnchorObject is to the RIGHT of dstHeapObject, then nudge + // dstHeapObject to the right + if (srcAnchorLeft > dstHeapObjectLeft) { + // an extra nudge of 32px matches up pretty well with the + // current CSS padding around .toplevelHeapObject + var delta = (srcAnchorLeft - dstHeapObjectLeft) + 32; + + // set margin rather than padding so that arrows tips still end + // at the left edge of the element. + // whoa, set relative CSS using +=, nice! + dstHeapObject.css('margin-left', '+=' + delta); + + //console.log(srcRowID, 'nudged', dstRowID, 'by', delta); + + var cur_nudgee_set = nudger_to_nudged_rows[srcRowID]; + if (cur_nudgee_set === undefined) { + cur_nudgee_set = d3.map(); + nudger_to_nudged_rows[srcRowID] = cur_nudgee_set; + } + cur_nudgee_set.set(dstRowID, 1 /* useless value */); + + // now if dstRowID itself nudged some other nodes, then nudge + // all of its nudgees by delta as well + var dst_nudgee_set = nudger_to_nudged_rows[dstRowID]; + if (dst_nudgee_set) { + dst_nudgee_set.forEach(function(k, v) { + // don't nudge if it's yourself, to make cycles look + // somewhat reasonable (although still not ideal). e.g.,: + // x = [1,2] + // y = [3,x] + // x[1] = y + if (k != srcRowID) { + // nudge this entire ROW by delta as well + myViz.domRoot.find('#' + k).css('margin-left', '+=' + delta); + + // then transitively add to entry for srcRowID + cur_nudgee_set.set(k, 1 /* useless value */); + } + }); + } + } + } + }); + } + + + // NB: ugh, I'm not very happy about this hack, but it seems necessary + // for embedding within sophisticated webpages such as IPython Notebook + + // delete all connectors. do this AS LATE AS POSSIBLE so that + // (presumably) the calls to $(this).empty() earlier in this function + // will properly garbage collect the connectors + // + // WARNING: for environment parent pointers, garbage collection doesn't seem to + // be working as intended :( + // + // I suspect that this is due to the fact that parent pointers are SIBLINGS + // of stackFrame divs and not children, so when stackFrame divs get destroyed, + // their associated parent pointers do NOT.) + myViz.jsPlumbInstance.reset(); + + + // use jsPlumb scopes to keep the different kinds of pointers separated + function renderVarValueConnector(varID, valueID) { + myViz.jsPlumbInstance.connect({source: varID, target: valueID, scope: 'varValuePointer'}); + } + + + var totalParentPointersRendered = 0; + + function renderParentPointerConnector(srcID, dstID) { + // SUPER-DUPER-ugly hack since I can't figure out a cleaner solution for now: + // if either srcID or dstID no longer exists, then SKIP rendering ... + if ((myViz.domRoot.find('#' + srcID).length == 0) || + (myViz.domRoot.find('#' + dstID).length == 0)) { + return; + } + + //console.log('renderParentPointerConnector:', srcID, dstID); + + myViz.jsPlumbInstance.connect({source: srcID, target: dstID, + anchors: ["LeftMiddle", "LeftMiddle"], + + // 'horizontally offset' the parent pointers up so that they don't look as ugly ... + //connector: ["Flowchart", { stub: 9 + (6 * (totalParentPointersRendered + 1)) }], + + // actually let's try a bezier curve ... + connector: [ "Bezier", { curviness: 45 }], + + endpoint: ["Dot", {radius: 4}], + //hoverPaintStyle: {lineWidth: 1, strokeStyle: connectorInactiveColor}, // no hover colors + scope: 'frameParentPointer'}); + totalParentPointersRendered++; + } + + if (!myViz.textualMemoryLabels) { + // re-render existing connectors and then ... + existingConnectionEndpointIDs.forEach(renderVarValueConnector); + // add all the NEW connectors that have arisen in this call to renderDataStructures + myViz.jsPlumbManager.connectionEndpointIDs.forEach(renderVarValueConnector); + } + // do the same for environment parent pointers + if (myViz.drawParentPointers) { + existingParentPointerConnectionEndpointIDs.forEach(renderParentPointerConnector); + myViz.jsPlumbManager.parentPointerConnectionEndpointIDs.forEach(renderParentPointerConnector); + } + + /* + myViz.jsPlumbInstance.select().each(function(c) { + console.log('CONN:', c.sourceId, c.targetId); + }); + */ + //console.log('---', myViz.jsPlumbInstance.select().length, '---'); + + + function highlight_frame(frameID) { + myViz.jsPlumbInstance.select().each(function(c) { + // find the enclosing .stackFrame ... + var stackFrameDiv = c.source.closest('.stackFrame'); + + // if this connector starts in the selected stack frame ... + if (stackFrameDiv.attr('id') == frameID) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: connectorBaseColor}); + c.endpoints[0].setPaintStyle({fillStyle: connectorBaseColor}); + //c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + + $(c.canvas).css("z-index", 1000); // ... and move it to the VERY FRONT + } + // for heap->heap connectors + else if (myViz.jsPlumbManager.heapConnectionEndpointIDs.has(c.endpoints[0].elementId)) { + // NOP since it's already the color and style we set by default + } + else { + // else unhighlight it + c.setPaintStyle({lineWidth:1, strokeStyle: connectorInactiveColor}); + c.endpoints[0].setPaintStyle({fillStyle: connectorInactiveColor}); + //c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + + $(c.canvas).css("z-index", 0); + } + }); + + + // clear everything, then just activate this one ... + myViz.domRoot.find(".stackFrame").removeClass("highlightedStackFrame"); + myViz.domRoot.find('#' + frameID).addClass("highlightedStackFrame"); + } + + + // highlight the top-most non-zombie stack frame or, if not available, globals + var frame_already_highlighted = false; + $.each(curEntry.stack_to_render, function(i, e) { + if (e.is_highlighted) { + highlight_frame(myViz.generateID('stack' + i)); + frame_already_highlighted = true; + } + }); + + if (!frame_already_highlighted) { + highlight_frame(myViz.generateID('globals')); + } + + try_hook("end_renderDataStructures", {myViz:myViz}); + +} + + +// render a tabular visualization where each row is an execution step, +// and each column is a variable +ExecutionVisualizer.prototype.renderTabularView = function() { + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + myViz.resetJsPlumbManager(); // very important!!! + + var allGlobalVars = []; + // Key: function name + // Value: list of ordered variables for function + var funcNameToOrderedVars = {}; + var orderedFuncNames = []; // function names in order of appearance + + // iterate through the entire trace and find all global variables, and + // all local variables in all functions, in order of appearance in the trace + $.each(myViz.curTrace, function(i, elt) { + $.each(elt.ordered_globals, function(i, g) { + // don't add duplicates into this list, + // but need to use a list to maintain ORDERING + if ($.inArray(g, allGlobalVars) === -1) { + allGlobalVars.push(g); + } + }); + + $.each(elt.stack_to_render, function(i, sf) { + var funcVarsList = funcNameToOrderedVars[sf.func_name]; + if (funcVarsList === undefined) { + funcVarsList = []; + funcNameToOrderedVars[sf.func_name] = funcVarsList; + orderedFuncNames.push(sf.func_name); + } + $.each(sf.ordered_varnames, function(i, v) { + // don't add duplicates into this list, + // but need to use a list to maintain ORDERING + // (ignore the special __return__ value) + if ($.inArray(v, funcVarsList) === -1 && v !== '__return__') { + funcVarsList.push(v); + } + }); + }); + }); + + /* + console.log("allGlobalVars:", allGlobalVars); + console.log("orderedFuncNames:", orderedFuncNames); + $.each(funcNameToOrderedVars, function(k, v) { + console.log("funcNameToOrderedVars[", k, "] =", v); + }); + */ + + var allVarNames = ['Step']; + + $.each(allGlobalVars, function(i, e) { + allVarNames.push(e); + }); + $.each(orderedFuncNames, function(i, funcName) { + $.each(funcNameToOrderedVars[funcName], function(i, v) { + allVarNames.push(funcName + ':' + v); + }); + }); + + // get the values of all objects in trace entry e + function getAllOrderedValues(curEntry) { + // HACK! start with a blank sentinel since the first column of the + // table is the step number + var allVarValues = ['']; + + $.each(allGlobalVars, function(i, e) { + allVarValues.push(curEntry.globals[e]); + }); + + // for local variables, grab only the values in the highlighted + // frame (if any) + var highlightedFrame = null; + $.each(curEntry.stack_to_render, function(i, sf) { + if (sf.is_highlighted) { + highlightedFrame = sf; + } + }); + + $.each(orderedFuncNames, function(i, funcName) { + $.each(funcNameToOrderedVars[funcName], function(i, v) { + var found = false; + if (highlightedFrame && funcName == highlightedFrame.func_name) { + var obj = highlightedFrame.encoded_locals[v]; + if (obj) { + allVarValues.push(obj); + found = true; + } + } + + // push an empty value if not found since we want everything to + // align with allVarNames + if (!found) { + allVarValues.push(undefined); + } + }); + }); + + // TODO: also walk up parent pointers to also display variable + // values in enclosing frames + + return allVarValues; + } + + + var tblRoot = myViz.domRootD3.select("#optTabularView"); + var tbl = tblRoot.append("table"); + tbl.attr('id', 'optTable'); + + var tHead = tbl.append('thead').attr('class', 'stepTableThead').append('tr'); + tHead.attr('class', 'stepTableTr'); + tHead.selectAll('thead td') + .data(allVarNames) + .enter() + .append('td') + .attr('class', 'stepTableTd') + .html(function(d) { return d; }) + + var tBody = tbl.append('tbody'); + tBody.attr('class', 'stepTableTbody'); + + var stepsAndTraceEntries = []; + $.each(myViz.curTrace, function(i, e) { + stepsAndTraceEntries.push([i, e]); + }); + + var tr = tBody.selectAll('tbody tr') + .data(stepsAndTraceEntries) + .enter() + .append("tr") + .attr("step", function(d, i) { return i; }) + .attr("class", 'stepTableTr'); + + var td = tr.selectAll("td") + .data(function(e) { return getAllOrderedValues(e[1]); }) + .enter() + .append("td") + .attr('class', 'stepTableTd') + .each(function(obj, i) { + $(this).empty(); + + // TODO: fixme -- this is super kludgy; must be a better way + var step = parseInt($(this).closest('tr').attr('step')); + + if (i == 0) { + $(this).html(step + 1); // one-indexed for readability + } + else { + if (obj === undefined) { + // keep this table cell EMPTY + } + else { + myViz.renderNestedObject(obj, step, $(this), 'tabular'); + } + } + }); + + + myViz.jsPlumbInstance.reset(); + + function renderTableVarValueConnector(varID, valueID) { + myViz.jsPlumbInstance.connect({source: varID, target: valueID, + scope: 'varValuePointer', + // make it look more aesthetically pleasing: + anchors: ['TopCenter', 'LeftMiddle']}); + } + + myViz.jsPlumbManager.connectionEndpointIDs.forEach(renderTableVarValueConnector); +} + + +// rendering functions, which all take a d3 dom element to anchor the +// new element to render +ExecutionVisualizer.prototype.renderPrimitiveObject = function(obj, d3DomElement) { + if (try_hook("renderPrimitiveObject", {obj:obj, d3DomElement:d3DomElement})[0]) + return; + + var typ = typeof obj; + + if (obj == null) { + d3DomElement.append('None'); + } + else if (typ == "number") { + d3DomElement.append('' + obj + ''); + } + else if (typ == "boolean") { + if (obj) { + d3DomElement.append('True'); + } + else { + d3DomElement.append('False'); + } + } + else if (typ == "string") { + // escape using htmlspecialchars to prevent HTML/script injection + var literalStr = htmlspecialchars(obj); + + // print as a double-quoted string literal + // with explicit newlines as
      + literalStr = literalStr.replace(new RegExp('\n', 'g'), '
      '); // replace ALL + literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL + literalStr = '"' + literalStr + '"'; + + d3DomElement.append('' + literalStr + ''); + } + else if (typ == "object") { + assert(obj[0] == 'SPECIAL_FLOAT'); + d3DomElement.append('' + obj[1] + ''); + } + else { + assert(false); + } +} + + +ExecutionVisualizer.prototype.renderNestedObject = function(obj, stepNum, d3DomElement) { + if (isPrimitiveType(obj)) { + this.renderPrimitiveObject(obj, d3DomElement); + } + else { + // obj is a ["REF", ] so dereference the 'pointer' to render that object + this.renderCompoundObject(getRefID(obj), stepNum, d3DomElement, false); + } +} + + +ExecutionVisualizer.prototype.renderCompoundObject = +function(objID, stepNum, d3DomElement, isTopLevel) { + var myViz = this; // to prevent confusion of 'this' inside of nested functions + + var heapObjID = myViz.generateHeapObjID(objID, stepNum); + + if (!isTopLevel && myViz.jsPlumbManager.renderedHeapObjectIDs.has(heapObjID)) { + var srcDivID = myViz.generateID('heap_pointer_src_' + myViz.jsPlumbManager.heap_pointer_src_id); + myViz.jsPlumbManager.heap_pointer_src_id++; // just make sure each source has a UNIQUE ID + + var dstDivID = heapObjID; + + if (myViz.textualMemoryLabels) { + var labelID = srcDivID + '_text_label'; + d3DomElement.append('
      id' + objID + '
      '); + + myViz.domRoot.find('div#' + labelID).hover( + function() { + myViz.jsPlumbInstance.connect({source: labelID, target: dstDivID, + scope: 'varValuePointer'}); + }, + function() { + myViz.jsPlumbInstance.select({source: labelID}).detach(); + }); + } + else { + // render jsPlumb arrow source since this heap object has already been rendered + // (or will be rendered soon) + + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + d3DomElement.append('
       
      '); + + assert(!myViz.jsPlumbManager.connectionEndpointIDs.has(srcDivID)); + myViz.jsPlumbManager.connectionEndpointIDs.set(srcDivID, dstDivID); + //console.log('HEAP->HEAP', srcDivID, dstDivID); + + assert(!myViz.jsPlumbManager.heapConnectionEndpointIDs.has(srcDivID)); + myViz.jsPlumbManager.heapConnectionEndpointIDs.set(srcDivID, dstDivID); + } + + return; // early return! + } + + + // wrap ALL compound objects in a heapObject div so that jsPlumb + // connectors can point to it: + d3DomElement.append('
      '); + d3DomElement = myViz.domRoot.find('#' + heapObjID); // TODO: maybe inefficient + + myViz.jsPlumbManager.renderedHeapObjectIDs.set(heapObjID, 1); + + var curHeap = myViz.curTrace[stepNum].heap; + var obj = curHeap[objID]; + assert($.isArray(obj)); + + // prepend the type label with a memory address label + var typeLabelPrefix = ''; + if (myViz.textualMemoryLabels) { + typeLabelPrefix = 'id' + objID + ':'; + } + + var hook_result = try_hook("renderCompoundObject", + {objID:objID, d3DomElement:d3DomElement, + isTopLevel:isTopLevel, obj:obj, + typeLabelPrefix:typeLabelPrefix, + stepNum:stepNum, + myViz:myViz}); + if (hook_result[0]) return; + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE' || obj[0] == 'SET' || obj[0] == 'DICT') { + var label = obj[0].toLowerCase(); + + assert(obj.length >= 1); + if (obj.length == 1) { + d3DomElement.append('
      ' + typeLabelPrefix + 'empty ' + label + '
      '); + } + else { + d3DomElement.append('
      ' + typeLabelPrefix + label + '
      '); + d3DomElement.append('
      '); + var tbl = d3DomElement.children('table'); + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE') { + tbl.append('
      '); + + var tbl = d3DomElement.children('table'); + + $.each(obj, function(ind, kvPair) { + if (ind < headerLength) return; // skip header tags + + tbl.append(''); + + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + // (actually this isn't the case when strings are rendered on the heap) + if (typeof kvPair[0] == "string") { + // common case ... + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + } + else { + // when strings are rendered as heap objects ... + myViz.renderNestedObject(kvPair[0], stepNum, keyTd); + } + + // values can be arbitrary objects, so recurse: + myViz.renderNestedObject(kvPair[1], stepNum, valTd); + }); + } + + // class attributes can be displayed or hidden, so as not to + // CLUTTER UP the display with a ton of attributes, especially + // from imported modules and custom types created from, say, + // collections.namedtuple + if (!isInstance) { + // super kludgy! use a global selector $ to get at the DOM + // element, which should be okay since IDs should be globally + // unique on a page, even with multiple ExecutionVisualizer + // instances ... but still feels dirty to me since it violates + // my "no using naked $(__) selectors for jQuery" convention :/ + $(d3DomElement.selector + ' .typeLabel #attrToggleLink').click(function() { + var elt = $(d3DomElement.selector + ' .classTbl'); + elt.toggle(); + $(this).html((elt.is(':visible') ? 'hide' : 'show') + ' attributes'); + + if (elt.is(':visible')) { + myViz.classAttrsHidden[d3DomElement.selector] = false; + $(this).html('hide attributes'); + } + else { + myViz.classAttrsHidden[d3DomElement.selector] = true; + $(this).html('show attributes'); + } + + myViz.redrawConnectors(); // redraw all arrows! + + return false; // so that the doesn't reload the page + }); + + // "remember" whether this was hidden earlier during this + // visualization session + if (myViz.classAttrsHidden[d3DomElement.selector]) { + $(d3DomElement.selector + ' .classTbl').hide(); + $(d3DomElement.selector + ' .typeLabel #attrToggleLink').html('show attributes'); + } + } + } + else if (obj[0] == 'INSTANCE_PPRINT') { + d3DomElement.append('
      ' + typeLabelPrefix + obj[1] + ' instance
      '); + + strRepr = htmlspecialchars(obj[2]); // escape strings! + d3DomElement.append('
      ' + strRepr + '
      '); + } + else if (obj[0] == 'FUNCTION') { + assert(obj.length == 3); + + // pretty-print lambdas and display other weird characters: + var funcName = htmlspecialchars(obj[1]).replace('<lambda>', '\u03bb'); + var parentFrameID = obj[2]; // optional + + if (!myViz.compactFuncLabels) { + d3DomElement.append('
      ' + typeLabelPrefix + 'function
      '); + } + + var funcPrefix = myViz.compactFuncLabels ? 'func' : ''; + + if (parentFrameID) { + d3DomElement.append('
      ' + funcPrefix + ' ' + funcName + ' [parent=f'+ parentFrameID + ']
      '); + } + else if (myViz.showAllFrameLabels) { + d3DomElement.append('
      ' + funcPrefix + ' ' + funcName + ' [parent=Global]
      '); + } + else { + d3DomElement.append('
      ' + funcPrefix + ' ' + funcName + '
      '); + } + } + else if (obj[0] == 'HEAP_PRIMITIVE') { + assert(obj.length == 3); + + var typeName = obj[1]; + var primitiveVal = obj[2]; + + // add a bit of padding to heap primitives, for aesthetics + d3DomElement.append('
      '); + d3DomElement.find('div.heapPrimitive').append('
      ' + typeLabelPrefix + typeName + '
      '); + myViz.renderPrimitiveObject(primitiveVal, d3DomElement.find('div.heapPrimitive')); + } + else { + // render custom data type + assert(obj.length == 2); + + var typeName = obj[0]; + var strRepr = obj[1]; + + strRepr = htmlspecialchars(strRepr); // escape strings! + + d3DomElement.append('
      ' + typeLabelPrefix + typeName + '
      '); + d3DomElement.append('
      ' + strRepr + '
      '); + } +} + + +ExecutionVisualizer.prototype.redrawConnectors = function() { + this.jsPlumbInstance.repaintEverything(); +} + + +// Utilities + + +/* colors - see pytutor.css for more colors */ + +var highlightedLineColor = '#e4faeb'; +var highlightedLineBorderColor = '#005583'; + +var highlightedLineLighterColor = '#e8fff0'; + +var funcCallLineColor = '#a2eebd'; + +var brightRed = '#e93f34'; + +var connectorBaseColor = '#005583'; +var connectorHighlightColor = brightRed; +var connectorInactiveColor = '#cccccc'; + +var errorColor = brightRed; + +var breakpointColor = brightRed; +var hoverBreakpointColor = connectorBaseColor; + + +// Unicode arrow types: '\u21d2', '\u21f0', '\u2907' +var darkArrowColor = brightRed; +var lightArrowColor = '#c9e6ca'; + + +function assert(cond) { + if (!cond) { + alert("Assertion Failure (see console log for backtrace)"); + throw 'Assertion Failure'; + } +} + +// taken from http://www.toao.net/32-my-htmlspecialchars-function-for-javascript +function htmlspecialchars(str) { + if (typeof(str) == "string") { + str = str.replace(/&/g, "&"); /* must do & first */ + + // ignore these for now ... + //str = str.replace(/"/g, """); + //str = str.replace(/'/g, "'"); + + str = str.replace(//g, ">"); + + // replace spaces: + str = str.replace(/ /g, " "); + + // replace tab as four spaces: + str = str.replace(/\t/g, "    "); + } + return str; +} + + +// same as htmlspecialchars except don't worry about expanding spaces or +// tabs since we want proper word wrapping in divs. +function htmlsanitize(str) { + if (typeof(str) == "string") { + str = str.replace(/&/g, "&"); /* must do & first */ + + str = str.replace(//g, ">"); + } + return str; +} + + +String.prototype.rtrim = function() { + return this.replace(/\s*$/g, ""); +} + + +// make sure varname doesn't contain any weird +// characters that are illegal for CSS ID's ... +// +// I know for a fact that iterator tmp variables named '_[1]' +// are NOT legal names for CSS ID's. +// I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. +// +// also some variable names are like '.0' (for generator expressions), +// and '.' seems to be illegal. +// +// also spaces are illegal, so convert to '_' +// TODO: what other characters are illegal??? +var lbRE = new RegExp('\\[|{|\\(|<', 'g'); +var rbRE = new RegExp('\\]|}|\\)|>', 'g'); +function varnameToCssID(varname) { + // make sure to REPLACE ALL (using the 'g' option) + // rather than just replacing the first entry + return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB').replace(/[.]/g, '_DOT_').replace(/ /g, '_'); +} + + +// compare two JSON-encoded compound objects for structural equivalence: +function structurallyEquivalent(obj1, obj2) { + // punt if either isn't a compound type + if (isPrimitiveType(obj1) || isPrimitiveType(obj2)) { + return false; + } + + // must be the same compound type + if (obj1[0] != obj2[0]) { + return false; + } + + // must have the same number of elements or fields + if (obj1.length != obj2.length) { + return false; + } + + // for a list or tuple, same size (e.g., a cons cell is a list/tuple of size 2) + if (obj1[0] == 'LIST' || obj1[0] == 'TUPLE') { + return true; + } + else { + var startingInd = -1; + + if (obj1[0] == 'DICT') { + startingInd = 2; + } + else if (obj1[0] == 'INSTANCE') { + startingInd = 3; + } + else { + return false; // punt on all other types + } + + var obj1fields = d3.map(); + + // for a dict or object instance, same names of fields (ordering doesn't matter) + for (var i = startingInd; i < obj1.length; i++) { + obj1fields.set(obj1[i][0], 1); // use as a set + } + + for (var i = startingInd; i < obj2.length; i++) { + if (!obj1fields.has(obj2[i][0])) { + return false; + } + } + + return true; + } +} + + +function isPrimitiveType(obj) { + var hook_result = try_hook("isPrimitiveType", {obj:obj}); + if (hook_result[0]) return hook_result[1]; + + // null is a primitive + if (obj == null) { + return true; + } + + if (typeof obj == "object") { + // kludge: only 'SPECIAL_FLOAT' objects count as primitives + return (obj[0] == 'SPECIAL_FLOAT'); + } + else { + // non-objects are primitives + return true; + } +} + +function getRefID(obj) { + assert(obj[0] == 'REF'); + return obj[1]; +} + + +// Annotation bubbles + +var qtipShared = { + show: { + ready: true, // show on document.ready instead of on mouseenter + delay: 0, + event: null, + effect: function() {$(this).show();}, // don't do any fancy fading because it screws up with scrolling + }, + hide: { + fixed: true, + event: null, + effect: function() {$(this).hide();}, // don't do any fancy fading because it screws up with scrolling + }, + style: { + classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style + }, +}; + + +// a speech bubble annotation to attach to: +// 'codeline' - a line of code +// 'frame' - a stack frame +// 'variable' - a variable within a stack frame +// 'object' - an object on the heap +// (as determined by the 'type' param) +// +// domID is the ID of the element to attach to (without the leading '#' sign) +function AnnotationBubble(parentViz, type, domID) { + this.parentViz = parentViz; + + this.domID = domID; + this.hashID = '#' + domID; + + this.type = type; + + if (type == 'codeline') { + this.my = 'left center'; + this.at = 'right center'; + } + else if (type == 'frame') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'variable') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'object') { + this.my = 'bottom left'; + this.at = 'top center'; + } + else { + assert(false); + } + + // possible states: + // 'invisible' + // 'edit' + // 'view' + // 'minimized' + // 'stub' + this.state = 'invisible'; + + this.text = ''; // the actual contents of the annotation bubble + + this.qtipHidden = false; // is there a qtip object present but hidden? (TODO: kinda confusing) +} + +AnnotationBubble.prototype.showStub = function() { + assert(this.state == 'invisible' || this.state == 'edit'); + assert(this.text == ''); + + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ' ', + id: this.domID, + position: { + my: this.my, + at: this.at, + adjust: { + x: (myBubble.type == 'codeline' ? -6 : 0), // shift codeline tips over a bit for aesthetics + }, + effect: null, // disable all cutesy animations + }, + style: { + classes: 'ui-tooltip-pgbootstrap ui-tooltip-pgbootstrap-stub' + } + })); + + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + myBubble.showEditor(); + }); + + this.state = 'stub'; +} + +AnnotationBubble.prototype.showEditor = function() { + assert(this.state == 'stub' || this.state == 'view' || this.state == 'minimized'); + + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + + var ta = ''; + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ta, + id: this.domID, + position: { + my: this.my, + at: this.at, + adjust: { + x: (myBubble.type == 'codeline' ? -6 : 0), // shift codeline tips over a bit for aesthetics + }, + effect: null, // disable all cutesy animations + } + })); + + + $(this.qTipContentID()).find('textarea.bubbleInputText') + // set handler when the textarea loses focus + .blur(function() { + myBubble.text = $(this).val().trim(); // strip all leading and trailing spaces + + if (myBubble.text) { + myBubble.showViewer(); + } + else { + myBubble.showStub(); + } + }) + .focus(); // grab focus so that the user can start typing right away! + + this.state = 'edit'; +} + + +AnnotationBubble.prototype.bindViewerClickHandler = function() { + var myBubble = this; + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + if (myBubble.parentViz.editAnnotationMode) { + myBubble.showEditor(); + } + else { + myBubble.minimizeViewer(); + } + }); +} + +AnnotationBubble.prototype.showViewer = function() { + assert(this.state == 'edit' || this.state == 'invisible'); + assert(this.text); // must be non-empty! + + var myBubble = this; + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: htmlsanitize(this.text), // help prevent HTML/JS injection attacks + id: this.domID, + position: { + my: this.my, + at: this.at, + adjust: { + x: (myBubble.type == 'codeline' ? -6 : 0), // shift codeline tips over a bit for aesthetics + }, + effect: null, // disable all cutesy animations + } + })); + + this.bindViewerClickHandler(); + this.state = 'view'; +} + + +AnnotationBubble.prototype.minimizeViewer = function() { + assert(this.state == 'view'); + + var myBubble = this; + + $(this.hashID).qtip('option', 'content.text', ' '); //hack to "minimize" its size + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + if (myBubble.parentViz.editAnnotationMode) { + myBubble.showEditor(); + } + else { + myBubble.restoreViewer(); + } + }); + + this.state = 'minimized'; +} + +AnnotationBubble.prototype.restoreViewer = function() { + assert(this.state == 'minimized'); + $(this.hashID).qtip('option', 'content.text', htmlsanitize(this.text)); // help prevent HTML/JS injection attacks + this.bindViewerClickHandler(); + this.state = 'view'; +} + +// NB: actually DESTROYS the QTip object +AnnotationBubble.prototype.makeInvisible = function() { + assert(this.state == 'stub' || this.state == 'edit'); + this.destroyQTip(); + this.state = 'invisible'; +} + + +AnnotationBubble.prototype.destroyQTip = function() { + $(this.hashID).qtip('destroy'); +} + +AnnotationBubble.prototype.qTipContentID = function() { + return '#ui-tooltip-' + this.domID + '-content'; +} + +AnnotationBubble.prototype.qTipID = function() { + return '#ui-tooltip-' + this.domID; +} + + +AnnotationBubble.prototype.enterEditMode = function() { + assert(this.parentViz.editAnnotationMode); + if (this.state == 'invisible') { + this.showStub(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } + } +} + +AnnotationBubble.prototype.enterViewMode = function() { + assert(!this.parentViz.editAnnotationMode); + if (this.state == 'stub') { + this.makeInvisible(); + } + else if (this.state == 'edit') { + this.text = $(this.qTipContentID()).find('textarea.bubbleInputText').val().trim(); // strip all leading and trailing spaces + + if (this.text) { + this.showViewer(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } + } + else { + this.makeInvisible(); + } + } + else if (this.state == 'invisible') { + // this happens when, say, you first enter View Mode + if (this.text) { + this.showViewer(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } + } + } +} + +AnnotationBubble.prototype.preseedText = function(txt) { + assert(this.state == 'invisible'); + this.text = txt; +} + +AnnotationBubble.prototype.redrawCodelineBubble = function() { + assert(this.type == 'codeline'); + + if (isOutputLineVisibleForBubbles(this.domID)) { + if (this.qtipHidden) { + $(this.hashID).qtip('show'); + } + else { + $(this.hashID).qtip('reposition'); + } + + this.qtipHidden = false; + } + else { + $(this.hashID).qtip('hide'); + this.qtipHidden = true; + } +} + +AnnotationBubble.prototype.redrawBubble = function() { + $(this.hashID).qtip('reposition'); +} + + +// NB: copy-and-paste from isOutputLineVisible with some minor tweaks +function isOutputLineVisibleForBubbles(lineDivID) { + var pcod = $('#pyCodeOutputDiv'); + + var lineNoTd = $('#' + lineDivID); + var LO = lineNoTd.offset().top; + + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 25)); +} + + +// popup question dialog code from Brad Miller + +// inputId is the ID of the input element +// divId is the div that containsthe visualizer +// answer is a dotted form of an attribute that lives in the curEntry of the trace +// So if we want to ask for the value of a global variable we would say 'globals.a' +// this allows us do do curTrace[i].globals.a But we do it in the loop below using the +// [] operator. +function traceQCheckMe(inputId, divId, answer) { + var vis = $("#"+divId).data("vis") + var i = vis.curInstr + var curEntry = vis.curTrace[i+1]; + var ans = $('#'+inputId).val() + var attrs = answer.split(".") + var correctAns = curEntry; + for (j in attrs) { + correctAns = correctAns[attrs[j]] + } + feedbackElement = $("#" + divId + "_feedbacktext") + if (ans.length > 0 && ans == correctAns) { + feedbackElement.html('Correct') + } else { + feedbackElement.html(vis.curTrace[i].question.feedback) + } + +} + +function closeModal(divId) { + $.modal.close() + $("#"+divId).data("vis").stepForward(); +} diff --git a/v3/js/togetherjs/README b/v3/js/togetherjs/README new file mode 100644 index 000000000..b82f23b8a --- /dev/null +++ b/v3/js/togetherjs/README @@ -0,0 +1,3 @@ +These files are all synced from my own modified fork of TogetherJS: + +https://github.com/pgbovine/togetherjs diff --git a/v3/js/togetherjs/togetherjs-min.js b/v3/js/togetherjs/togetherjs-min.js new file mode 100644 index 000000000..67b5b9883 --- /dev/null +++ b/v3/js/togetherjs/togetherjs-min.js @@ -0,0 +1,905 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/*jshint scripturl:true */ +(function () { + + var defaultConfiguration = { + // Disables clicks for a certain element. + // (e.g., 'canvas' would not show clicks on canvas elements.) + // Setting this to true will disable clicks globally. + dontShowClicks: false, + // Experimental feature to echo clicks to certain elements across clients: + cloneClicks: false, + // Enable Mozilla or Google analytics on the page when TogetherJS is activated: + // FIXME: these don't seem to be working, and probably should be removed in favor + // of the hub analytics + enableAnalytics: false, + // The code to enable (this is defaulting to a Mozilla code): + analyticsCode: "UA-35433268-28", + // The base URL of the hub (gets filled in below): + hubBase: null, + // A function that will return the name of the user: + getUserName: null, + // A function that will return the color of the user: + getUserColor: null, + // A function that will return the avatar of the user: + getUserAvatar: null, + // The siteName is used in the walkthrough (defaults to document.title): + siteName: null, + // Whether to use the minimized version of the code (overriding the built setting) + useMinimizedCode: undefined, + // Any events to bind to + on: {}, + // Hub events to bind to + hub_on: {}, + // Enables the alt-T alt-T TogetherJS shortcut; however, this setting + // must be enabled early as TogetherJSConfig_enableShortcut = true; + enableShortcut: false, + // The name of this tool as provided to users. The UI is updated to use this. + // Because of how it is used in text it should be a proper noun, e.g., + // "MySite's Collaboration Tool" + toolName: null, + // Used to auto-start TogetherJS with a {prefix: pageName, max: participants} + // Also with findRoom: "roomName" it will connect to the given room name + findRoom: null, + // If true, starts TogetherJS automatically (of course!) + autoStart: false, + // If true, then the "Join TogetherJS Session?" confirmation dialog + // won't come up + suppressJoinConfirmation: false, + // If true, then the "Invite a friend" window won't automatically come up + suppressInvite: false, + // A room in which to find people to invite to this session, + inviteFromRoom: null, + // This is used to keep sessions from crossing over on the same + // domain, if for some reason you want sessions that are limited + // to only a portion of the domain: + storagePrefix: "togetherjs", + // When true, we treat the entire URL, including the hash, as the identifier + // of the page; i.e., if you one person is on `http://example.com/#view1` + // and another person is at `http://example.com/#view2` then these two people + // are considered to be at completely different URLs + includeHashInUrl: false, + // When true, the WebRTC-based mic/chat will be disabled + disableWebRTC: false, + // When true, youTube videos will synchronize + youtube: true, + // Ignores the following console messages, disables all messages if set to true + ignoreMessages: ["cursor-update", "keydown", "scroll-update"], + // Ignores the following forms (will ignore all forms if set to true): + ignoreForms: [":password"], + fallbackLang: "en_US" + }; + + var styleSheet = "/togetherjs/togetherjs.css"; + + var baseUrl = ""; + if (baseUrl == "__" + "baseUrl__") { + // Reset the variable if it doesn't get substituted + baseUrl = ""; + } + // True if this file should use minimized sub-resources: + var min = "yes" == "__" + "min__" ? false : "yes" == "yes"; + + var baseUrlOverride = localStorage.getItem("togetherjs.baseUrlOverride"); + if (baseUrlOverride) { + try { + baseUrlOverride = JSON.parse(baseUrlOverride); + } catch (e) { + baseUrlOverride = null; + } + if ((! baseUrlOverride) || baseUrlOverride.expiresAt < Date.now()) { + // Ignore because it has expired + localStorage.removeItem("togetherjs.baseUrlOverride"); + } else { + baseUrl = baseUrlOverride.baseUrl; + var logger = console.warn || console.log; + logger.call(console, "Using TogetherJS baseUrlOverride:", baseUrl); + logger.call(console, "To undo run: localStorage.removeItem('togetherjs.baseUrlOverride')"); + } + } + + var configOverride = localStorage.getItem("togetherjs.configOverride"); + if (configOverride) { + try { + configOverride = JSON.parse(configOverride); + } catch (e) { + configOverride = null; + } + if ((! configOverride) || configOverride.expiresAt < Date.now()) { + localStorage.removeItem("togetherjs.configOverride"); + } else { + var shownAny = false; + for (var attr in configOverride) { + if (! configOverride.hasOwnProperty(attr)) { + continue; + } + if (attr == "expiresAt" || ! configOverride.hasOwnProperty(attr)) { + continue; + } + if (! shownAny) { + console.warn("Using TogetherJS configOverride"); + console.warn("To undo run: localStorage.removeItem('togetherjs.configOverride')"); + } + window["TogetherJSConfig_" + attr] = configOverride[attr]; + console.log("Config override:", attr, "=", configOverride[attr]); + } + } + } + + var version = "unknown"; + // FIXME: we could/should use a version from the checkout, at least + // for production + var cacheBust = ""; + if ((! cacheBust) || cacheBust == "") { + cacheBust = Date.now() + ""; + } else { + version = cacheBust; + } + + // Make sure we have all of the console.* methods: + if (typeof console == "undefined") { + console = {}; + } + if (! console.log) { + console.log = function () {}; + } + ["debug", "info", "warn", "error"].forEach(function (method) { + if (! console[method]) { + console[method] = console.log; + } + }); + + if (! baseUrl) { + var scripts = document.getElementsByTagName("script"); + for (var i=0; i with togetherjs.js and togetherjs-min.js)"); + } + + function addStyle() { + var existing = document.getElementById("togetherjs-stylesheet"); + if (! existing) { + var link = document.createElement("link"); + link.id = "togetherjs-stylesheet"; + link.setAttribute("rel", "stylesheet"); + link.href = baseUrl + styleSheet + "?bust=" + cacheBust; + document.head.appendChild(link); + } + } + + function addScript(url) { + var script = document.createElement("script"); + script.src = baseUrl + url + "?bust=" + cacheBust; + document.head.appendChild(script); + } + + var TogetherJS = window.TogetherJS = function TogetherJS(event) { + if (TogetherJS.running) { + var session = TogetherJS.require("session"); + session.close(); + return; + } + TogetherJS.startup.button = null; + try { + if (event && typeof event == "object") { + if (event.target && typeof event) { + TogetherJS.startup.button = event.target; + } else if (event.nodeType == 1) { + TogetherJS.startup.button = event; + } else if (event[0] && event[0].nodeType == 1) { + // Probably a jQuery element + TogetherJS.startup.button = event[0]; + } + } + } catch (e) { + console.warn("Error determining starting button:", e); + } + if (window.TowTruckConfig) { + console.warn("TowTruckConfig is deprecated; please use TogetherJSConfig"); + if (window.TogetherJSConfig) { + console.warn("Ignoring TowTruckConfig in favor of TogetherJSConfig"); + } else { + window.TogetherJSConfig = TowTruckConfig; + } + } + if (window.TogetherJSConfig && (! window.TogetherJSConfig.loaded)) { + TogetherJS.config(window.TogetherJSConfig); + window.TogetherJSConfig.loaded = true; + } + + // This handles loading configuration from global variables. This + // includes TogetherJSConfig_on_*, which are attributes folded into + // the "on" configuration value. + var attr; + var attrName; + var globalOns = {}; + for (attr in window) { + if (attr.indexOf("TogetherJSConfig_on_") === 0) { + attrName = attr.substr(("TogetherJSConfig_on_").length); + globalOns[attrName] = window[attr]; + } else if (attr.indexOf("TogetherJSConfig_") === 0) { + attrName = attr.substr(("TogetherJSConfig_").length); + TogetherJS.config(attrName, window[attr]); + } else if (attr.indexOf("TowTruckConfig_on_") === 0) { + attrName = attr.substr(("TowTruckConfig_on_").length); + console.warn("TowTruckConfig_* is deprecated, please rename", attr, "to TogetherJSConfig_on_" + attrName); + globalOns[attrName] = window[attr]; + } else if (attr.indexOf("TowTruckConfig_") === 0) { + attrName = attr.substr(("TowTruckConfig_").length); + console.warn("TowTruckConfig_* is deprecated, please rename", attr, "to TogetherJSConfig_" + attrName); + TogetherJS.config(attrName, window[attr]); + } + + + } + // FIXME: copy existing config? + // FIXME: do this directly in TogetherJS.config() ? + // FIXME: close these configs? + var ons = TogetherJS.config.get("on"); + for (attr in globalOns) { + if (globalOns.hasOwnProperty(attr)) { + // FIXME: should we avoid overwriting? Maybe use arrays? + ons[attr] = globalOns[attr]; + } + } + TogetherJS.config("on", ons); + for (attr in ons) { + TogetherJS.on(attr, ons[attr]); + } + var hubOns = TogetherJS.config.get("hub_on"); + if (hubOns) { + for (attr in hubOns) { + if (hubOns.hasOwnProperty(attr)) { + TogetherJS.hub.on(attr, hubOns[attr]); + } + } + } + + if (! TogetherJS.startup.reason) { + // Then a call to TogetherJS() from a button must be started TogetherJS + TogetherJS.startup.reason = "started"; + } + + // FIXME: maybe I should just test for TogetherJS.require: + if (TogetherJS._loaded) { + var session = TogetherJS.require("session"); + addStyle(); + session.start(); + return; + } + // A sort of signal to session.js to tell it to actually + // start itself (i.e., put up a UI and try to activate) + TogetherJS.startup._launch = true; + + addStyle(); + var minSetting = TogetherJS.config.get("useMinimizedCode"); + TogetherJS.config.close("useMinimizedCode"); + if (minSetting !== undefined) { + min = !! minSetting; + } + var requireConfig = TogetherJS._extend(TogetherJS.requireConfig); + var deps = ["session", "jquery"]; + var lang = TogetherJS.getConfig("lang"); + // [igoryen]: We should generate this value in Gruntfile.js, based on the available translations + var availableTranslations = { + "en-US": true, + "ru": true, + "ru-RU": true + }; + + if(lang === undefined) { + var navigatorLang = navigator.language.replace(/_/g, "-"); + if (!availableTranslations[navigatorLang]) { + lang = TogetherJS.config.get("fallbackLang"); + } else { + lang = navigatorLang; + } + TogetherJS.config("lang", lang); + } + + TogetherJS.config("lang", lang.replace(/_/g, "-")); // rename into TogetherJS.config.get()? + var localeTemplates = "templates-" + lang;// rename into TogetherJS.config.get()? + deps.splice(0, 0, localeTemplates); + function callback(session, jquery) { + TogetherJS._loaded = true; + if (! min) { + TogetherJS.require = require.config({context: "togetherjs"}); + TogetherJS._requireObject = require; + } + } + if (! min) { + if (typeof require == "function") { + if (! require.config) { + console.warn("The global require (", require, ") is not requirejs; please use togetherjs-min.js"); + throw new Error("Conflict with window.require"); + } + TogetherJS.require = require.config(requireConfig); + } + } + if (typeof TogetherJS.require == "function") { + // This is an already-configured version of require + TogetherJS.require(deps, callback); + } else { + requireConfig.deps = deps; + requireConfig.callback = callback; + if (! min) { + window.require = requireConfig; + } + } + if (min) { + addScript("/togetherjs/togetherjsPackage.js"); + } else { + addScript("/togetherjs/libs/require.js"); + } + }; + + TogetherJS.pageLoaded = Date.now(); + + TogetherJS._extend = function (base, extensions) { + if (! extensions) { + extensions = base; + base = {}; + } + for (var a in extensions) { + if (extensions.hasOwnProperty(a)) { + base[a] = extensions[a]; + } + } + return base; + }; + + TogetherJS._startupInit = { + // What element, if any, was used to start the session: + button: null, + // The startReason is the reason TogetherJS was started. One of: + // null: not started + // started: hit the start button (first page view) + // joined: joined the session (first page view) + reason: null, + // Also, the session may have started on "this" page, or maybe is continued + // from a past page. TogetherJS.continued indicates the difference (false the + // first time TogetherJS is started or joined, true on later page loads). + continued: false, + // This is set to tell the session what shareId to use, if the boot + // code knows (mostly because the URL indicates the id). + _joinShareId: null, + // This tells session to start up immediately (otherwise it would wait + // for session.start() to be run) + _launch: false + }; + TogetherJS.startup = TogetherJS._extend(TogetherJS._startupInit); + TogetherJS.running = false; + + TogetherJS.requireConfig = { + context: "togetherjs", + baseUrl: baseUrl + "/togetherjs", + urlArgs: "bust=" + cacheBust, + paths: { + jquery: "libs/jquery-1.8.3.min", + walkabout: "libs/walkabout/walkabout", + esprima: "libs/walkabout/lib/esprima", + falafel: "libs/walkabout/lib/falafel", + tinycolor: "libs/tinycolor", + whrandom: "libs/whrandom/random" + } + }; + + TogetherJS._mixinEvents = function (proto) { + proto.on = function on(name, callback) { + if (typeof callback != "function") { + console.warn("Bad callback for", this, ".once(", name, ", ", callback, ")"); + throw "Error: .once() called with non-callback"; + } + if (name.search(" ") != -1) { + var names = name.split(/ +/g); + names.forEach(function (n) { + this.on(n, callback); + }, this); + return; + } + if (this._knownEvents && this._knownEvents.indexOf(name) == -1) { + var thisString = "" + this; + if (thisString.length > 20) { + thisString = thisString.substr(0, 20) + "..."; + } + console.warn(thisString + ".on('" + name + "', ...): unknown event"); + if (console.trace) { + console.trace(); + } + } + if (! this._listeners) { + this._listeners = {}; + } + if (! this._listeners[name]) { + this._listeners[name] = []; + } + if (this._listeners[name].indexOf(callback) == -1) { + this._listeners[name].push(callback); + } + }; + proto.once = function once(name, callback) { + if (typeof callback != "function") { + console.warn("Bad callback for", this, ".once(", name, ", ", callback, ")"); + throw "Error: .once() called with non-callback"; + } + var attr = "onceCallback_" + name; + // FIXME: maybe I should add the event name to the .once attribute: + if (! callback[attr]) { + callback[attr] = function onceCallback() { + callback.apply(this, arguments); + this.off(name, onceCallback); + delete callback[attr]; + }; + } + this.on(name, callback[attr]); + }; + proto.off = proto.removeListener = function off(name, callback) { + if (this._listenerOffs) { + // Defer the .off() call until the .emit() is done. + this._listenerOffs.push([name, callback]); + return; + } + if (name.search(" ") != -1) { + var names = name.split(/ +/g); + names.forEach(function (n) { + this.off(n, callback); + }, this); + return; + } + if ((! this._listeners) || ! this._listeners[name]) { + return; + } + var l = this._listeners[name], _len = l.length; + for (var i=0; i<_len; i++) { + if (l[i] == callback) { + l.splice(i, 1); + break; + } + } + }; + proto.emit = function emit(name) { + var offs = this._listenerOffs = []; + if ((! this._listeners) || ! this._listeners[name]) { + return; + } + var args = Array.prototype.slice.call(arguments, 1); + var l = this._listeners[name]; + l.forEach(function (callback) { + + callback.apply(this, args); + }, this); + delete this._listenerOffs; + if (offs.length) { + offs.forEach(function (item) { + this.off(item[0], item[1]); + }, this); + } + + }; + return proto; + }; + + /* This finalizes the unloading of TogetherJS, including unloading modules */ + TogetherJS._teardown = function () { + var requireObject = TogetherJS._requireObject || window.require; + // FIXME: this doesn't clear the context for min-case + if (requireObject.s && requireObject.s.contexts) { + delete requireObject.s.contexts.togetherjs; + } + TogetherJS._loaded = false; + TogetherJS.startup = TogetherJS._extend(TogetherJS._startupInit); + TogetherJS.running = false; + }; + + TogetherJS._mixinEvents(TogetherJS); + TogetherJS._knownEvents = ["ready", "close"]; + TogetherJS.toString = function () { + return "TogetherJS"; + }; + + var defaultHubBase = "https://hub.togetherjs.com"; + if (defaultHubBase == "__" + "hubUrl"+ "__") { + // Substitution wasn't made + defaultHubBase = "https://hub.togetherjs.mozillalabs.com"; + } + defaultConfiguration.hubBase = defaultHubBase; + + TogetherJS._configuration = {}; + TogetherJS._defaultConfiguration = { + // Disables clicks for a certain element. + // (e.g., 'canvas' would not show clicks on canvas elements.) + // Setting this to true will disable clicks globally. + dontShowClicks: false, + // Experimental feature to echo clicks to certain elements across clients: + cloneClicks: false, + // Enable Mozilla or Google analytics on the page when TogetherJS is activated: + // FIXME: these don't seem to be working, and probably should be removed in favor + // of the hub analytics + enableAnalytics: false, + // The code to enable (this is defaulting to a Mozilla code): + analyticsCode: "UA-35433268-28", + // The base URL of the hub + hubBase: defaultHubBase, + // A function that will return the name of the user: + getUserName: null, + // A function that will return the color of the user: + getUserColor: null, + // A function that will return the avatar of the user: + getUserAvatar: null, + // The siteName is used in the walkthrough (defaults to document.title): + siteName: null, + // Whether to use the minimized version of the code (overriding the built setting) + useMinimizedCode: undefined, + // Any events to bind to + on: {}, + // Hub events to bind to + hub_on: {}, + // Enables the alt-T alt-T TogetherJS shortcut; however, this setting + // must be enabled early as TogetherJSConfig_enableShortcut = true; + enableShortcut: false, + // The name of this tool as provided to users. The UI is updated to use this. + // Because of how it is used in text it should be a proper noun, e.g., + // "MySite's Collaboration Tool" + toolName: null, + // Used to auto-start TogetherJS with a {prefix: pageName, max: participants} + // Also with findRoom: "roomName" it will connect to the given room name + findRoom: null, + // If true, starts TogetherJS automatically (of course!) + autoStart: false, + // If true, then the "Join TogetherJS Session?" confirmation dialog + // won't come up + suppressJoinConfirmation: false, + // If true, then the "Invite a friend" window won't automatically come up + suppressInvite: false, + // A room in which to find people to invite to this session, + inviteFromRoom: null, + // This is used to keep sessions from crossing over on the same + // domain, if for some reason you want sessions that are limited + // to only a portion of the domain: + storagePrefix: "togetherjs", + // When true, we treat the entire URL, including the hash, as the identifier + // of the page; i.e., if you one person is on `http://example.com/#view1` + // and another person is at `http://example.com/#view2` then these two people + // are considered to be at completely different URLs + includeHashInUrl: false, + // The language to present the tool in, such as "en-US" or "ru-RU" + // Note this must be set as TogetherJSConfig_lang, as it effects the loader + // and must be set as soon as this file is included + lang: null + }; + // FIXME: there's a point at which configuration can't be updated + // (e.g., hubBase after the TogetherJS has loaded). We should keep + // track of these and signal an error if someone attempts to + // reconfigure too late + + TogetherJS.getConfig = function (name) { // rename into TogetherJS.config.get()? + var value = TogetherJS._configuration[name]; + if (value === undefined) { + if (! TogetherJS._defaultConfiguration.hasOwnProperty(name)) { + console.error("Tried to load unknown configuration value:", name); + } + value = TogetherJS._defaultConfiguration[name]; + } + return value; + }; + TogetherJS._defaultConfiguration = defaultConfiguration; + TogetherJS._configTrackers = {}; + TogetherJS._configClosed = {}; + + /* TogetherJS.config(configurationObject) + or: TogetherJS.config(configName, value) + + Adds configuration to TogetherJS. You may also set the global variable TogetherJSConfig + and when TogetherJS is started that configuration will be loaded. + + Unknown configuration values will lead to console error messages. + */ + TogetherJS.config = function (name, maybeValue) { + var settings; + if (arguments.length == 1) { + if (typeof name != "object") { + throw new Error('TogetherJS.config(value) must have an object value (not: ' + name + ')'); + } + settings = name; + } else { + settings = {}; + settings[name] = maybeValue; + } + var i; + var tracker; + for (var attr in settings) { + if (settings.hasOwnProperty(attr)) { + if (TogetherJS._configClosed[attr] && TogetherJS.running) { + throw new Error("The configuration " + attr + " is finalized and cannot be changed"); + } + } + } + for (var attr in settings) { + if (! settings.hasOwnProperty(attr)) { + continue; + } + if (attr == "loaded" || attr == "callToStart") { + continue; + } + if (! TogetherJS._defaultConfiguration.hasOwnProperty(attr)) { + console.warn("Unknown configuration value passed to TogetherJS.config():", attr); + } + var previous = TogetherJS._configuration[attr]; + var value = settings[attr]; + TogetherJS._configuration[attr] = value; + var trackers = TogetherJS._configTrackers[name] || []; + var failed = false; + for (i=0; i with togetherjs.js and togetherjs-min.js)"); + } + + function addStyle() { + var existing = document.getElementById("togetherjs-stylesheet"); + if (! existing) { + var link = document.createElement("link"); + link.id = "togetherjs-stylesheet"; + link.setAttribute("rel", "stylesheet"); + link.href = baseUrl + styleSheet + "?bust=" + cacheBust; + document.head.appendChild(link); + } + } + + function addScript(url) { + var script = document.createElement("script"); + script.src = baseUrl + url + "?bust=" + cacheBust; + document.head.appendChild(script); + } + + var TogetherJS = window.TogetherJS = function TogetherJS(event) { + if (TogetherJS.running) { + var session = TogetherJS.require("session"); + session.close(); + return; + } + TogetherJS.startup.button = null; + try { + if (event && typeof event == "object") { + if (event.target && typeof event) { + TogetherJS.startup.button = event.target; + } else if (event.nodeType == 1) { + TogetherJS.startup.button = event; + } else if (event[0] && event[0].nodeType == 1) { + // Probably a jQuery element + TogetherJS.startup.button = event[0]; + } + } + } catch (e) { + console.warn("Error determining starting button:", e); + } + if (window.TowTruckConfig) { + console.warn("TowTruckConfig is deprecated; please use TogetherJSConfig"); + if (window.TogetherJSConfig) { + console.warn("Ignoring TowTruckConfig in favor of TogetherJSConfig"); + } else { + window.TogetherJSConfig = TowTruckConfig; + } + } + if (window.TogetherJSConfig && (! window.TogetherJSConfig.loaded)) { + TogetherJS.config(window.TogetherJSConfig); + window.TogetherJSConfig.loaded = true; + } + + // This handles loading configuration from global variables. This + // includes TogetherJSConfig_on_*, which are attributes folded into + // the "on" configuration value. + var attr; + var attrName; + var globalOns = {}; + for (attr in window) { + if (attr.indexOf("TogetherJSConfig_on_") === 0) { + attrName = attr.substr(("TogetherJSConfig_on_").length); + globalOns[attrName] = window[attr]; + } else if (attr.indexOf("TogetherJSConfig_") === 0) { + attrName = attr.substr(("TogetherJSConfig_").length); + TogetherJS.config(attrName, window[attr]); + } else if (attr.indexOf("TowTruckConfig_on_") === 0) { + attrName = attr.substr(("TowTruckConfig_on_").length); + console.warn("TowTruckConfig_* is deprecated, please rename", attr, "to TogetherJSConfig_on_" + attrName); + globalOns[attrName] = window[attr]; + } else if (attr.indexOf("TowTruckConfig_") === 0) { + attrName = attr.substr(("TowTruckConfig_").length); + console.warn("TowTruckConfig_* is deprecated, please rename", attr, "to TogetherJSConfig_" + attrName); + TogetherJS.config(attrName, window[attr]); + } + + + } + // FIXME: copy existing config? + // FIXME: do this directly in TogetherJS.config() ? + // FIXME: close these configs? + var ons = TogetherJS.config.get("on"); + for (attr in globalOns) { + if (globalOns.hasOwnProperty(attr)) { + // FIXME: should we avoid overwriting? Maybe use arrays? + ons[attr] = globalOns[attr]; + } + } + TogetherJS.config("on", ons); + for (attr in ons) { + TogetherJS.on(attr, ons[attr]); + } + var hubOns = TogetherJS.config.get("hub_on"); + if (hubOns) { + for (attr in hubOns) { + if (hubOns.hasOwnProperty(attr)) { + TogetherJS.hub.on(attr, hubOns[attr]); + } + } + } + + if (! TogetherJS.startup.reason) { + // Then a call to TogetherJS() from a button must be started TogetherJS + TogetherJS.startup.reason = "started"; + } + + // FIXME: maybe I should just test for TogetherJS.require: + if (TogetherJS._loaded) { + var session = TogetherJS.require("session"); + addStyle(); + session.start(); + return; + } + // A sort of signal to session.js to tell it to actually + // start itself (i.e., put up a UI and try to activate) + TogetherJS.startup._launch = true; + + addStyle(); + var minSetting = TogetherJS.config.get("useMinimizedCode"); + TogetherJS.config.close("useMinimizedCode"); + if (minSetting !== undefined) { + min = !! minSetting; + } + var requireConfig = TogetherJS._extend(TogetherJS.requireConfig); + var deps = ["session", "jquery"]; + var lang = TogetherJS.getConfig("lang"); + // [igoryen]: We should generate this value in Gruntfile.js, based on the available translations + var availableTranslations = { + "en-US": true, + "ru": true, + "ru-RU": true + }; + + if(lang === undefined) { + var navigatorLang = navigator.language.replace(/_/g, "-"); + if (!availableTranslations[navigatorLang]) { + lang = TogetherJS.config.get("fallbackLang"); + } else { + lang = navigatorLang; + } + TogetherJS.config("lang", lang); + } + + TogetherJS.config("lang", lang.replace(/_/g, "-")); // rename into TogetherJS.config.get()? + var localeTemplates = "templates-" + lang;// rename into TogetherJS.config.get()? + deps.splice(0, 0, localeTemplates); + function callback(session, jquery) { + TogetherJS._loaded = true; + if (! min) { + TogetherJS.require = require.config({context: "togetherjs"}); + TogetherJS._requireObject = require; + } + } + if (! min) { + if (typeof require == "function") { + if (! require.config) { + console.warn("The global require (", require, ") is not requirejs; please use togetherjs-min.js"); + throw new Error("Conflict with window.require"); + } + TogetherJS.require = require.config(requireConfig); + } + } + if (typeof TogetherJS.require == "function") { + // This is an already-configured version of require + TogetherJS.require(deps, callback); + } else { + requireConfig.deps = deps; + requireConfig.callback = callback; + if (! min) { + window.require = requireConfig; + } + } + if (min) { + addScript("/togetherjs/togetherjsPackage.js"); + } else { + addScript("/togetherjs/libs/require.js"); + } + }; + + TogetherJS.pageLoaded = Date.now(); + + TogetherJS._extend = function (base, extensions) { + if (! extensions) { + extensions = base; + base = {}; + } + for (var a in extensions) { + if (extensions.hasOwnProperty(a)) { + base[a] = extensions[a]; + } + } + return base; + }; + + TogetherJS._startupInit = { + // What element, if any, was used to start the session: + button: null, + // The startReason is the reason TogetherJS was started. One of: + // null: not started + // started: hit the start button (first page view) + // joined: joined the session (first page view) + reason: null, + // Also, the session may have started on "this" page, or maybe is continued + // from a past page. TogetherJS.continued indicates the difference (false the + // first time TogetherJS is started or joined, true on later page loads). + continued: false, + // This is set to tell the session what shareId to use, if the boot + // code knows (mostly because the URL indicates the id). + _joinShareId: null, + // This tells session to start up immediately (otherwise it would wait + // for session.start() to be run) + _launch: false + }; + TogetherJS.startup = TogetherJS._extend(TogetherJS._startupInit); + TogetherJS.running = false; + + TogetherJS.requireConfig = { + context: "togetherjs", + baseUrl: baseUrl + "/togetherjs", + urlArgs: "bust=" + cacheBust, + paths: { + jquery: "libs/jquery-1.8.3.min", + walkabout: "libs/walkabout/walkabout", + esprima: "libs/walkabout/lib/esprima", + falafel: "libs/walkabout/lib/falafel", + tinycolor: "libs/tinycolor", + whrandom: "libs/whrandom/random" + } + }; + + TogetherJS._mixinEvents = function (proto) { + proto.on = function on(name, callback) { + if (typeof callback != "function") { + console.warn("Bad callback for", this, ".once(", name, ", ", callback, ")"); + throw "Error: .once() called with non-callback"; + } + if (name.search(" ") != -1) { + var names = name.split(/ +/g); + names.forEach(function (n) { + this.on(n, callback); + }, this); + return; + } + if (this._knownEvents && this._knownEvents.indexOf(name) == -1) { + var thisString = "" + this; + if (thisString.length > 20) { + thisString = thisString.substr(0, 20) + "..."; + } + console.warn(thisString + ".on('" + name + "', ...): unknown event"); + if (console.trace) { + console.trace(); + } + } + if (! this._listeners) { + this._listeners = {}; + } + if (! this._listeners[name]) { + this._listeners[name] = []; + } + if (this._listeners[name].indexOf(callback) == -1) { + this._listeners[name].push(callback); + } + }; + proto.once = function once(name, callback) { + if (typeof callback != "function") { + console.warn("Bad callback for", this, ".once(", name, ", ", callback, ")"); + throw "Error: .once() called with non-callback"; + } + var attr = "onceCallback_" + name; + // FIXME: maybe I should add the event name to the .once attribute: + if (! callback[attr]) { + callback[attr] = function onceCallback() { + callback.apply(this, arguments); + this.off(name, onceCallback); + delete callback[attr]; + }; + } + this.on(name, callback[attr]); + }; + proto.off = proto.removeListener = function off(name, callback) { + if (this._listenerOffs) { + // Defer the .off() call until the .emit() is done. + this._listenerOffs.push([name, callback]); + return; + } + if (name.search(" ") != -1) { + var names = name.split(/ +/g); + names.forEach(function (n) { + this.off(n, callback); + }, this); + return; + } + if ((! this._listeners) || ! this._listeners[name]) { + return; + } + var l = this._listeners[name], _len = l.length; + for (var i=0; i<_len; i++) { + if (l[i] == callback) { + l.splice(i, 1); + break; + } + } + }; + proto.emit = function emit(name) { + var offs = this._listenerOffs = []; + if ((! this._listeners) || ! this._listeners[name]) { + return; + } + var args = Array.prototype.slice.call(arguments, 1); + var l = this._listeners[name]; + l.forEach(function (callback) { + + callback.apply(this, args); + }, this); + delete this._listenerOffs; + if (offs.length) { + offs.forEach(function (item) { + this.off(item[0], item[1]); + }, this); + } + + }; + return proto; + }; + + /* This finalizes the unloading of TogetherJS, including unloading modules */ + TogetherJS._teardown = function () { + var requireObject = TogetherJS._requireObject || window.require; + // FIXME: this doesn't clear the context for min-case + if (requireObject.s && requireObject.s.contexts) { + delete requireObject.s.contexts.togetherjs; + } + TogetherJS._loaded = false; + TogetherJS.startup = TogetherJS._extend(TogetherJS._startupInit); + TogetherJS.running = false; + }; + + TogetherJS._mixinEvents(TogetherJS); + TogetherJS._knownEvents = ["ready", "close"]; + TogetherJS.toString = function () { + return "TogetherJS"; + }; + + var defaultHubBase = "https://hub.togetherjs.com"; + if (defaultHubBase == "__" + "hubUrl"+ "__") { + // Substitution wasn't made + defaultHubBase = "https://hub.togetherjs.mozillalabs.com"; + } + defaultConfiguration.hubBase = defaultHubBase; + + TogetherJS._configuration = {}; + TogetherJS._defaultConfiguration = { + // Disables clicks for a certain element. + // (e.g., 'canvas' would not show clicks on canvas elements.) + // Setting this to true will disable clicks globally. + dontShowClicks: false, + // Experimental feature to echo clicks to certain elements across clients: + cloneClicks: false, + // Enable Mozilla or Google analytics on the page when TogetherJS is activated: + // FIXME: these don't seem to be working, and probably should be removed in favor + // of the hub analytics + enableAnalytics: false, + // The code to enable (this is defaulting to a Mozilla code): + analyticsCode: "UA-35433268-28", + // The base URL of the hub + hubBase: defaultHubBase, + // A function that will return the name of the user: + getUserName: null, + // A function that will return the color of the user: + getUserColor: null, + // A function that will return the avatar of the user: + getUserAvatar: null, + // The siteName is used in the walkthrough (defaults to document.title): + siteName: null, + // Whether to use the minimized version of the code (overriding the built setting) + useMinimizedCode: undefined, + // Any events to bind to + on: {}, + // Hub events to bind to + hub_on: {}, + // Enables the alt-T alt-T TogetherJS shortcut; however, this setting + // must be enabled early as TogetherJSConfig_enableShortcut = true; + enableShortcut: false, + // The name of this tool as provided to users. The UI is updated to use this. + // Because of how it is used in text it should be a proper noun, e.g., + // "MySite's Collaboration Tool" + toolName: null, + // Used to auto-start TogetherJS with a {prefix: pageName, max: participants} + // Also with findRoom: "roomName" it will connect to the given room name + findRoom: null, + // If true, starts TogetherJS automatically (of course!) + autoStart: false, + // If true, then the "Join TogetherJS Session?" confirmation dialog + // won't come up + suppressJoinConfirmation: false, + // If true, then the "Invite a friend" window won't automatically come up + suppressInvite: false, + // A room in which to find people to invite to this session, + inviteFromRoom: null, + // This is used to keep sessions from crossing over on the same + // domain, if for some reason you want sessions that are limited + // to only a portion of the domain: + storagePrefix: "togetherjs", + // When true, we treat the entire URL, including the hash, as the identifier + // of the page; i.e., if you one person is on `http://example.com/#view1` + // and another person is at `http://example.com/#view2` then these two people + // are considered to be at completely different URLs + includeHashInUrl: false, + // The language to present the tool in, such as "en-US" or "ru-RU" + // Note this must be set as TogetherJSConfig_lang, as it effects the loader + // and must be set as soon as this file is included + lang: null + }; + // FIXME: there's a point at which configuration can't be updated + // (e.g., hubBase after the TogetherJS has loaded). We should keep + // track of these and signal an error if someone attempts to + // reconfigure too late + + TogetherJS.getConfig = function (name) { // rename into TogetherJS.config.get()? + var value = TogetherJS._configuration[name]; + if (value === undefined) { + if (! TogetherJS._defaultConfiguration.hasOwnProperty(name)) { + console.error("Tried to load unknown configuration value:", name); + } + value = TogetherJS._defaultConfiguration[name]; + } + return value; + }; + TogetherJS._defaultConfiguration = defaultConfiguration; + TogetherJS._configTrackers = {}; + TogetherJS._configClosed = {}; + + /* TogetherJS.config(configurationObject) + or: TogetherJS.config(configName, value) + + Adds configuration to TogetherJS. You may also set the global variable TogetherJSConfig + and when TogetherJS is started that configuration will be loaded. + + Unknown configuration values will lead to console error messages. + */ + TogetherJS.config = function (name, maybeValue) { + var settings; + if (arguments.length == 1) { + if (typeof name != "object") { + throw new Error('TogetherJS.config(value) must have an object value (not: ' + name + ')'); + } + settings = name; + } else { + settings = {}; + settings[name] = maybeValue; + } + var i; + var tracker; + for (var attr in settings) { + if (settings.hasOwnProperty(attr)) { + if (TogetherJS._configClosed[attr] && TogetherJS.running) { + throw new Error("The configuration " + attr + " is finalized and cannot be changed"); + } + } + } + for (var attr in settings) { + if (! settings.hasOwnProperty(attr)) { + continue; + } + if (attr == "loaded" || attr == "callToStart") { + continue; + } + if (! TogetherJS._defaultConfiguration.hasOwnProperty(attr)) { + console.warn("Unknown configuration value passed to TogetherJS.config():", attr); + } + var previous = TogetherJS._configuration[attr]; + var value = settings[attr]; + TogetherJS._configuration[attr] = value; + var trackers = TogetherJS._configTrackers[name] || []; + var failed = false; + for (i=0; i this.backoffDetection) { + this._backoff = 0; + } else { + this._backoff++; + } + var time = Math.min(this._backoff * this.backoffTime, this.maxBackoffTime); + setTimeout((function () { + this._setupConnection(); + }).bind(this), time); + } + }).bind(this); + this.socket.onmessage = (function (event) { + this._incoming(event.data); + }).bind(this); + this.socket.onerror = (function (event) { + console.error('WebSocket error:', event.data); + }).bind(this); + } + +}); + + +/* Sends TO a window or iframe */ +channels.PostMessageChannel = util.Class(AbstractChannel, { + _pingPollPeriod: 100, // milliseconds + _pingPollIncrease: 100, // +100 milliseconds for each failure + _pingMax: 2000, // up to a max of 2000 milliseconds + + constructor: function (win, expectedOrigin) { + this.expectedOrigin = expectedOrigin; + this._pingReceived = false; + this._receiveMessage = this._receiveMessage.bind(this); + if (win) { + this.bindWindow(win, true); + } + this._pingFailures = 0; + this.baseConstructor(); + }, + + toString: function () { + var s = '[PostMessageChannel'; + if (this.window) { + s += ' to window ' + this.window; + } else { + s += ' not bound to a window'; + } + if (this.window && ! this._pingReceived) { + s += ' still establishing'; + } + return s + ']'; + }, + + bindWindow: function (win, noSetup) { + if (this.window) { + this.close(); + // Though we deinitialized everything, we aren't exactly closed: + this.closed = false; + } + if (win && win.contentWindow) { + win = win.contentWindow; + } + this.window = win; + // FIXME: The distinction between this.window and window seems unimportant + // in the case of postMessage + var w = this.window; + // In a Content context we add the listener to the local window + // object, but in the addon context we add the listener to some + // other window, like the one we were given: + if (typeof window != "undefined") { + w = window; + } + w.addEventListener("message", this._receiveMessage, false); + if (! noSetup) { + this._setupConnection(); + } + }, + + _send: function (data) { + this.window.postMessage(data, this.expectedOrigin || "*"); + }, + + _ready: function () { + return this.window && this._pingReceived; + }, + + _setupConnection: function () { + if (this.closed || this._pingReceived || (! this.window)) { + return; + } + this._pingFailures++; + this._send("hello"); + // We'll keep sending ping messages until we get a reply + var time = this._pingPollPeriod + (this._pingPollIncrease * this._pingFailures); + time = time > this._pingPollMax ? this._pingPollMax : time; + this._pingTimeout = setTimeout(this._setupConnection.bind(this), time); + }, + + _receiveMessage: function (event) { + if (event.source !== this.window) { + return; + } + if (this.expectedOrigin && event.origin != this.expectedOrigin) { + console.info("Expected message from", this.expectedOrigin, + "but got message from", event.origin); + return; + } + if (! this.expectedOrigin) { + this.expectedOrigin = event.origin; + } + if (event.data == "hello") { + this._pingReceived = true; + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + this._pingTimeout = null; + } + this._flush(); + return; + } + this._incoming(event.data); + }, + + close: function () { + this.closed = true; + this._pingReceived = false; + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + } + window.removeEventListener("message", this._receiveMessage, false); + if (this.onclose) { + this.onclose(); + } + this.emit("close"); + } + +}); + + +/* Handles message FROM an exterior window/parent */ +channels.PostMessageIncomingChannel = util.Class(AbstractChannel, { + + constructor: function (expectedOrigin) { + this.source = null; + this.expectedOrigin = expectedOrigin; + this._receiveMessage = this._receiveMessage.bind(this); + window.addEventListener("message", this._receiveMessage, false); + this.baseConstructor(); + }, + + toString: function () { + var s = '[PostMessageIncomingChannel'; + if (this.source) { + s += ' bound to source ' + s; + } else { + s += ' awaiting source'; + } + return s + ']'; + }, + + _send: function (data) { + this.source.postMessage(data, this.expectedOrigin); + }, + + _ready: function () { + return !!this.source; + }, + + _setupConnection: function () { + }, + + _receiveMessage: function (event) { + if (this.expectedOrigin && this.expectedOrigin != "*" && + event.origin != this.expectedOrigin) { + // FIXME: Maybe not worth mentioning? + console.info("Expected message from", this.expectedOrigin, + "but got message from", event.origin); + return; + } + if (! this.expectedOrigin) { + this.expectedOrigin = event.origin; + } + if (! this.source) { + this.source = event.source; + } + if (event.data == "hello") { + // Just a ping + this.source.postMessage("hello", this.expectedOrigin); + return; + } + this._incoming(event.data); + }, + + close: function () { + this.closed = true; + window.removeEventListener("message", this._receiveMessage, false); + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + } + if (this.onclose) { + this.onclose(); + } + this.emit("close"); + } + +}); + +channels.Router = util.Class(util.mixinEvents({ + + constructor: function (channel) { + this._channelMessage = this._channelMessage.bind(this); + this._channelClosed = this._channelClosed.bind(this); + this._routes = Object.create(null); + if (channel) { + this.bindChannel(channel); + } + }, + + bindChannel: function (channel) { + if (this.channel) { + this.channel.removeListener("message", this._channelMessage); + this.channel.removeListener("close", this._channelClosed); + } + this.channel = channel; + this.channel.on("message", this._channelMessage.bind(this)); + this.channel.on("close", this._channelClosed.bind(this)); + }, + + _channelMessage: function (msg) { + if (msg.type == "route") { + var id = msg.routeId; + var route = this._routes[id]; + if (! route) { + console.warn("No route with the id", id); + return; + } + if (msg.close) { + this._closeRoute(route.id); + } else { + if (route.onmessage) { + route.onmessage(msg.message); + } + route.emit("message", msg.message); + } + } + }, + + _channelClosed: function () { + for (var id in this._routes) { + this._closeRoute(id); + } + }, + + _closeRoute: function (id) { + var route = this._routes[id]; + if (route.onclose) { + route.onclose(); + } + route.emit("close"); + delete this._routes[id]; + }, + + makeRoute: function (id) { + id = id || util.generateId(); + var route = Route(this, id); + this._routes[id] = route; + return route; + } +})); + +var Route = util.Class(util.mixinEvents({ + constructor: function (router, id) { + this.router = router; + this.id = id; + }, + + send: function (msg) { + this.router.channel.send({ + type: "route", + routeId: this.id, + message: msg + }); + }, + + close: function () { + if (this.router._routes[this.id] !== this) { + // This route instance has been overwritten, so ignore + return; + } + delete this.router._routes[this.id]; + } + +})); + +return channels; + +}); diff --git a/v3/js/togetherjs/togetherjs/chat.js b/v3/js/togetherjs/togetherjs/chat.js new file mode 100644 index 000000000..b069fb9e5 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/chat.js @@ -0,0 +1,395 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +/*jshint evil:true */ +define(["require", "jquery", "util", "session", "ui", "templates", "playback", "storage", "peers", "windowing"], function (require, $, util, session, ui, templates, playback, storage, peers, windowing) { + var chat = util.Module("chat"); + var assert = util.assert; + var Walkabout; + + session.hub.on("chat", function (msg) { + ui.chat.text({ + text: msg.text, + peer: msg.peer, + // FIXME: a little unsure of trusting this (maybe I should prefix it?) + messageId: msg.messageId, + notify: true + }); + saveChatMessage({ + text: msg.text, + date: Date.now(), + peerId: msg.peer.id, + messageId: msg.messageId + }); + }); + + // FIXME: this doesn't really belong in this module: + session.hub.on("bye", function (msg) { + ui.chat.leftSession({ + peer: msg.peer, + declinedJoin: msg.reason == "declined-join" + }); + }); + + chat.submit = function (message) { + var parts = message.split(/ /); + if (parts[0].charAt(0) == "/") { + var name = parts[0].substr(1).toLowerCase(); + var method = commands["command_" + name]; + if (method) { + method.apply(null, parts.slice(1)); + return; + } + } + var messageId = session.clientId + "-" + Date.now(); + session.send({ + type: "chat", + text: message, + messageId: messageId + }); + ui.chat.text({ + text: message, + peer: peers.Self, + messageId: messageId, + notify: false + }); + saveChatMessage({ + text: message, + date: Date.now(), + peerId: peers.Self.id, + messageId: messageId + }); + }; + + var commands = { + command_help: function () { + var msg = util.trim(templates("help")); + ui.chat.system({ + text: msg + }); + }, + + command_test: function (args) { + if (! Walkabout) { + require(["walkabout"], (function (WalkaboutModule) { + Walkabout = WalkaboutModule; + this.command_test(args); + }).bind(this)); + return; + } + args = util.trim(args || "").split(/\s+/g); + if (args[0] === "" || ! args.length) { + if (this._testCancel) { + args = ["cancel"]; + } else { + args = ["start"]; + } + } + if (args[0] == "cancel") { + ui.chat.system({ + text: "Aborting test" + }); + this._testCancel(); + this._testCancel = null; + return; + } + if (args[0] == "start") { + var times = parseInt(args[1], 10); + if (isNaN(times) || ! times) { + times = 100; + } + ui.chat.system({ + text: "Testing with walkabout.js" + }); + var tmpl = $(templates("walkabout")); + var container = ui.container.find(".togetherjs-test-container"); + container.empty(); + container.append(tmpl); + container.show(); + var statusContainer = container.find(".togetherjs-status"); + statusContainer.text("starting..."); + this._testCancel = Walkabout.runManyActions({ + ondone: function () { + statusContainer.text("done"); + statusContainer.one("click", function () { + container.hide(); + }); + this._testCancel = null; + }, + onstatus: function (status) { + var note = "actions: " + status.actions.length + " running: " + + (status.times - status.remaining) + " / " + status.times; + statusContainer.text(note); + } + }); + return; + } + if (args[0] == "show") { + if (this._testShow.length) { + this._testShow.forEach(function (item) { + if (item) { + item.remove(); + } + }, this); + this._testShow = []; + } else { + var actions = Walkabout.findActions(); + actions.forEach(function (action) { + this._testShow.push(action.show()); + }, this); + } + return; + } + if (args[0] == "describe") { + Walkabout.findActions().forEach(function (action) { + ui.chat.system({ + text: action.description() + }); + }, this); + return; + } + ui.chat.system({ + text: "Did not understand: " + args.join(" ") + }); + }, + + _testCancel: null, + _testShow: [], + + command_clear: function () { + ui.chat.clear(); + }, + + command_exec: function () { + var expr = Array.prototype.slice.call(arguments).join(" "); + var result; + // We use this to force global eval (not in this scope): + var e = eval; + try { + result = e(expr); + } catch (error) { + ui.chat.system({ + text: "Error: " + error + }); + } + if (result !== undefined) { + ui.chat.system({ + text: "" + result + }); + } + }, + + command_record: function () { + ui.chat.system({ + text: "When you see the robot appear, the recording will have started" + }); + window.open( + session.recordUrl(), "_blank", + "left,width=" + ($(window).width() / 2)); + }, + + playing: null, + + command_playback: function (url) { + if (this.playing) { + this.playing.cancel(); + this.playing.unload(); + this.playing = null; + ui.chat.system({ + text: "playback cancelled" + }); + return; + } + if (! url) { + ui.chat.system({ + text: "Nothing is playing" + }); + return; + } + var logLoader = playback.getLogs(url); + logLoader.then( + (function (logs) { + if (! logs) { + ui.chat.system({ + text: "No logs found." + }); + return; + } + logs.save(); + this.playing = logs; + logs.play(); + }).bind(this), + function (error) { + ui.chat.system({ + text: "Error fetching " + url + ":\n" + JSON.stringify(error, null, " ") + }); + }); + windowing.hide("#togetherjs-chat"); + }, + + command_savelogs: function (name) { + session.send({ + type: "get-logs", + forClient: session.clientId, + saveAs: name + }); + function save(msg) { + if (msg.request.forClient == session.clientId && msg.request.saveAs == name) { + storage.set("recording." + name, msg.logs).then(function () { + session.hub.off("logs", save); + ui.chat.system({ + text: "Saved as local:" + name + }); + }); + } + } + session.hub.on("logs", save); + }, + + command_baseurl: function (url) { + if (! url) { + storage.get("baseUrlOverride").then(function (b) { + if (b) { + ui.chat.system({ + text: "Set to: " + b.baseUrl + }); + } else { + ui.chat.system({ + text: "No baseUrl override set" + }); + } + }); + return; + } + url = url.replace(/\/*$/, ""); + ui.chat.system({ + text: "If this goes wrong, do this in the console to reset:\n localStorage.setItem('togetherjs.baseUrlOverride', null)" + }); + storage.set("baseUrlOverride", { + baseUrl: url, + expiresAt: Date.now() + (1000 * 60 * 60 * 24) + }).then(function () { + ui.chat.system({ + text: "baseUrl overridden (to " + url + "), will last for one day." + }); + }); + }, + + command_config: function (variable, value) { + if (! (variable || value)) { + storage.get("configOverride").then(function (c) { + if (c) { + util.forEachAttr(c, function (value, attr) { + if (attr == "expiresAt") { + return; + } + ui.chat.system({ + text: " " + attr + " = " + JSON.stringify(value) + }); + }); + ui.chat.system({ + text: "Config expires at " + (new Date(c.expiresAt)) + }); + } else { + ui.chat.system({ + text: "No config override" + }); + } + }); + return; + } + if (variable == "clear") { + storage.set("configOverride", undefined); + ui.chat.system({ + text: "Clearing all overridden configuration" + }); + return; + } + console.log("config", [variable, value]); + if (! (variable && value)) { + ui.chat.system({ + text: "Error: must provide /config VAR VALUE" + }); + return; + } + try { + value = JSON.parse(value); + } catch (e) { + ui.chat.system({ + text: "Error: value (" + value + ") could not be parsed: " + e + }); + return; + } + if (! TogetherJS._defaultConfiguration.hasOwnProperty(variable)) { + ui.chat.system({ + text: "Warning: variable " + variable + " is unknown" + }); + } + storage.get("configOverride").then(function (c) { + c = c || {}; + c[variable] = value; + c.expiresAt = Date.now() + (1000 * 60 * 60 * 24); + storage.set("configOverride", c).then(function () { + ui.chat.system({ + text: "Variable " + variable + " = " + JSON.stringify(value) + "\nValue will be set for one day." + }); + }); + }); + } + + }; + + // this section deal with saving/restoring chat history as long as session is alive + var chatStorageKey = "chatlog"; + var maxLogMessages = 100; + + function saveChatMessage(obj) { + assert(obj.peerId); + assert(obj.messageId); + assert(obj.date); + assert(typeof obj.text == "string"); + + loadChatLog().then(function (log) { + for (var i = log.length - 1; i >= 0; i--) { + if (log[i].messageId === obj.messageId) { + return; + } + } + log.push(obj); + if (log.length > maxLogMessages) { + log.splice(0, log.length - maxLogMessages); + } + storage.tab.set(chatStorageKey, log); + }); + } + + function loadChatLog() { + return storage.tab.get(chatStorageKey, []); + } + + session.once("ui-ready", function () { + loadChatLog().then(function (log) { + if (! log) { + return; + } + for (var i = 0; i < log.length; i++) { + // peers should already be loaded from sessionStorage by the peers module + // maybe i should use a try catch block here + var currentPeer = peers.getPeer(log[i].peerId); + ui.chat.text({ + text: log[i].text, + date: log[i].date, + peer: currentPeer, + messageId: log[i].messageId + }); + } + }); + }); + //delete chat log + session.on("close", function(){ + storage.tab.set(chatStorageKey, undefined); + }); + + return chat; + +}); diff --git a/v3/js/togetherjs/togetherjs/console.js b/v3/js/togetherjs/togetherjs/console.js new file mode 100644 index 000000000..ad7aa8ba0 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/console.js @@ -0,0 +1,286 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define(["util"], function (util) { + + var console = window.console || {log: function () {}}; + + var Console = util.Class({ + constructor: function () { + this.messages = []; + this.level = this.levels.log; + }, + + messageLimit: 100, + + levels: { + debug: 1, + // FIXME: I'm considering *not* wrapping console.log, and strictly keeping + // it as a debugging tool; also line numbers would be preserved + log: 2, + info: 3, + notify: 4, + warn: 5, + error: 6, + fatal: 7 + }, + + // Gets set below: + maxLevel: 0, + + consoleLevels: [ + [], + console.debug || [], + console.log || [], + console.info || [], + console.notify || [], + console.warn || [], + console.error || [], + console.fatal || [] + ], + + levelNames: {}, + + setLevel: function (l) { + var number; + if (typeof l == "string") { + number = this.levels[l]; + if (number === undefined) { + throw new Error("Tried to set Console level to unknown level string: " + l); + } + l = number; + } + if (typeof l == "function") { + number = this.consoleLevels.indexOf(l); + if (number == -1) { + throw new Error("Tried to set Console level based on unknown console function: " + l); + } + l = number; + } + if (typeof l == "number") { + if (l < 0) { + throw new Error("Console level must be 0 or larger: " + l); + } else if (l > this.maxLevel) { + throw new Error("Console level must be " + this.maxLevel + " or smaller: " + l); + } + } + this.level = l; + }, + + write: function (level) { + try { + this.messages.push([ + Date.now(), + level, + this._stringify(Array.prototype.slice.call(arguments, 1)) + ]); + } catch (e) { + console.warn("Error stringifying argument:", e); + } + if (level != "suppress" && this.level <= level) { + var method = console[this.levelNames[level]]; + if (! method) { + method = console.log; + } + method.apply(console, Array.prototype.slice.call(arguments, 1)); + } + }, + + suppressedWrite: function () { + this.write.apply(this, ["suppress"].concat(Array.prototype.slice.call(arguments))); + }, + + trace: function (level) { + level = level || 'log'; + if (console.trace) { + level = "suppressedWrite"; + } + try { + throw new Error(); + } catch (e) { + // FIXME: trim this frame + var stack = e.stack; + stack = stack.replace(/^[^\n]*\n/, ""); + this[level](stack); + } + if (console.trace) { + console.trace(); + } + }, + + _browserInfo: function () { + // FIXME: add TogetherJS version and + return [ + "TogetherJS base URL: " + TogetherJS.baseUrl, + "User Agent: " + navigator.userAgent, + "Page loaded: " + this._formatDate(TogetherJS.pageLoaded), + "Age: " + this._formatMinutes(Date.now() - TogetherJS.pageLoaded) + " minutes", + // FIXME: make this right: + //"Window: height: " + window.screen.height + " width: " + window.screen.width + "URL: " + location.href, + "------+------+----------------------------------------------" + ]; + }, + + _stringify: function (args) { + var s = ""; + for (var i=0; i 10) { + // Over 10 minutes, just ignore the seconds + return m; + } + var seconds = Math.floor(remaining / 1000) + ""; + m += ":"; + seconds = lpad(seconds, 2, "0"); + m += seconds; + if (m == "0:00") { + m += ((remaining / 1000).toFixed(3) + "").substr(1); + } + return m; + }, + + _formatLevel: function (l) { + if (l === "suppress") { + return ""; + } + return this.levelNames[l]; + }, + + toString: function () { + try { + var lines = this._browserInfo(); + this.messages.forEach(function (m) { + lines.push(lpad(this._formatTime(m[0]), 6) + " " + rpad(this._formatLevel(m[1]), 6) + " " + lpadLines(m[2], 14)); + }, this); + return lines.join("\n"); + } catch (e) { + // toString errors can otherwise be swallowed: + console.warn("Error running console.toString():", e); + throw e; + } + }, + + submit: function (options) { + // FIXME: friendpaste is broken for this + // (and other pastebin sites aren't really Browser-accessible) + return util.Deferred(function (def) { + options = options || {}; + var site = options.site || TogetherJS.config.get("pasteSite") || "https://www.friendpaste.com/"; + var req = new XMLHttpRequest(); + req.open("POST", site); + req.setRequestHeader("Content-Type", "application/json"); + req.send(JSON.stringify({ + "title": options.title || "TogetherJS log file", + "snippet": this.toString(), + "language": "text" + })); + req.onreadystatechange = function () { + if (req.readyState === 4) { + var data = JSON.parse(req.responseText); + } + }; + }); + } + + }); + + function rpad(s, len, pad) { + s = s + ""; + pad = pad || " "; + while (s.length < len) { + s += pad; + } + return s; + } + + function lpad(s, len, pad) { + s = s + ""; + pad = pad || " "; + while (s.length < len) { + s = pad + s; + } + return s; + } + + function lpadLines(s, len, pad) { + var i; + s = s + ""; + if (s.indexOf("\n") == -1) { + return s; + } + pad = pad || " "; + var fullPad = ""; + for (i=0; i wTop + height - CURSOR_HEIGHT) { + top = height - CURSOR_HEIGHT - 5; + this.setClass("togetherjs-scrolled-below"); + } else { + this.setClass("togetherjs-scrolled-normal"); + } + this.element.css({ + top: top, + left: left + }); + }, + + refresh: function () { + if (this.lastTop !== null) { + this.setPosition(this.lastTop, this.lastLeft); + } + }, + + setKeydown: function () { + if (this.keydownTimeout) { + clearTimeout(this.keydownTimeout); + } else { + this.element.find(".togetherjs-cursor-typing").show().animateKeyboard(); + } + this.keydownTimeout = setTimeout(this.clearKeydown, this.KEYDOWN_WAIT_TIME); + }, + + clearKeydown: function () { + this.keydownTimeout = null; + this.element.find(".togetherjs-cursor-typing").hide().stopKeyboardAnimation(); + }, + + _destroy: function () { + this.element.remove(); + this.element = null; + } + }); + + Cursor._cursors = {}; + + cursor.getClient = Cursor.getClient = function (clientId) { + var c = Cursor._cursors[clientId]; + if (! c) { + c = Cursor._cursors[clientId] = Cursor(clientId); + } + return c; + }; + + Cursor.forEach = function (callback, context) { + context = context || null; + for (var a in Cursor._cursors) { + if (Cursor._cursors.hasOwnProperty(a)) { + callback.call(context, Cursor._cursors[a], a); + } + } + }; + + Cursor.destroy = function (clientId) { + Cursor._cursors[clientId]._destroy(); + delete Cursor._cursors[clientId]; + }; + + peers.on("new-peer identity-updated status-updated", function (peer) { + var c = Cursor.getClient(peer.id); + c.updatePeer(peer); + }); + + var lastTime = 0; + var MIN_TIME = 100; + var lastPosX = -1; + var lastPosY = -1; + var lastMessage = null; + function mousemove(event) { + var now = Date.now(); + if (now - lastTime < MIN_TIME) { + return; + } + lastTime = now; + var pageX = event.pageX; + var pageY = event.pageY; + if (Math.abs(lastPosX - pageX) < 3 && Math.abs(lastPosY - pageY) < 3) { + // Not a substantial enough change + return; + } + lastPosX = pageX; + lastPosY = pageY; + var target = event.target; + var parent = $(target).closest(".togetherjs-window, .togetherjs-popup, #togetherjs-dock"); + if (parent.length) { + target = parent[0]; + } else if (elementFinder.ignoreElement(target)) { + target = null; + } + if ((! target) || target == document.documentElement || target == document.body) { + lastMessage = { + type: "cursor-update", + top: pageY, + left: pageX + }; + session.send(lastMessage); + return; + } + target = $(target); + var offset = target.offset(); + if (! offset) { + // FIXME: this really is walkabout.js's problem to fire events on the + // document instead of a specific element + console.warn("Could not get offset of element:", target[0]); + return; + } + var offsetX = pageX - offset.left; + var offsetY = pageY - offset.top; + lastMessage = { + type: "cursor-update", + element: elementFinder.elementLocation(target), + offsetX: Math.floor(offsetX), + offsetY: Math.floor(offsetY) + }; + session.send(lastMessage); + } + + function makeCursor(color) { + var canvas = $(""); + canvas.attr("height", CURSOR_HEIGHT); + canvas.attr("width", CURSOR_WIDTH); + var context = canvas[0].getContext('2d'); + context.fillStyle = color; + context.moveTo(0, 0); + context.beginPath(); + context.lineTo(0, CURSOR_HEIGHT/1.2); + context.lineTo(Math.sin(CURSOR_ANGLE/2) * CURSOR_HEIGHT / 1.5, + Math.cos(CURSOR_ANGLE/2) * CURSOR_HEIGHT / 1.5); + context.lineTo(Math.sin(CURSOR_ANGLE) * CURSOR_HEIGHT / 1.2, + Math.cos(CURSOR_ANGLE) * CURSOR_HEIGHT / 1.2); + context.lineTo(0, 0); + context.shadowColor = 'rgba(0,0,0,0.3)'; + context.shadowBlur = 2; + context.shadowOffsetX = 1; + context.shadowOffsetY = 2; + context.strokeStyle = "#ffffff"; + context.stroke(); + context.fill(); + return canvas[0].toDataURL("image/png"); + } + + var scrollTimeout = null; + var scrollTimeoutSet = 0; + var SCROLL_DELAY_TIMEOUT = 75; + var SCROLL_DELAY_LIMIT = 300; + + function scroll() { + var now = Date.now(); + if (scrollTimeout) { + if (now - scrollTimeoutSet < SCROLL_DELAY_LIMIT) { + clearTimeout(scrollTimeout); + } else { + // Just let it progress anyway + return; + } + } + scrollTimeout = setTimeout(_scrollRefresh, SCROLL_DELAY_TIMEOUT); + if (! scrollTimeoutSet) { + scrollTimeoutSet = now; + } + } + + var lastScrollMessage = null; + function _scrollRefresh() { + scrollTimeout = null; + scrollTimeoutSet = 0; + Cursor.forEach(function (c) { + c.refresh(); + }); + lastScrollMessage = { + type: "scroll-update", + position: elementFinder.elementByPixel($(window).scrollTop()) + }; + session.send(lastScrollMessage); + } + + // FIXME: do the same thing for cursor position? And give up on the + // ad hoc update-on-hello? + session.on("prepare-hello", function (helloMessage) { + if (lastScrollMessage) { + helloMessage.scrollPosition = lastScrollMessage.position; + } + }); + + session.hub.on("scroll-update", function (msg) { + msg.peer.scrollPosition = msg.position; + if (msg.peer.following) { + msg.peer.view.scrollTo(); + } + }); + + // In case there are multiple peers, we track that we've accepted one of their + // hello-based scroll updates, just so we don't bounce around (we don't intelligently + // choose which one to use, just the first that comes in) + var acceptedScrollUpdate = false; + session.hub.on("hello-back hello", function (msg) { + if (msg.type == "hello") { + // Once a hello comes in, a bunch of hello-backs not intended for us will also + // come in, and we should ignore them + acceptedScrollUpdate = true; + } + if (! msg.scrollPosition) { + return; + } + msg.peer.scrollPosition = msg.scrollPosition; + if ((! acceptedScrollUpdate) && + msg.sameUrl && + Date.now() - session.timeHelloSent < SCROLL_UPDATE_CUTOFF) { + acceptedScrollUpdate = true; + msg.peer.view.scrollTo(); + } + }); + + session.on("ui-ready", function () { + $(document).mousemove(mousemove); + document.addEventListener("click", documentClick, true); + document.addEventListener("keydown", documentKeydown, true); + $(window).scroll(scroll); + scroll(); + }); + + session.on("close", function () { + Cursor.forEach(function (c, clientId) { + Cursor.destroy(clientId); + }); + $(document).unbind("mousemove", mousemove); + document.removeEventListener("click", documentClick, true); + document.removeEventListener("keydown", documentKeydown, true); + $(window).unbind("scroll", scroll); + }); + + session.hub.on("hello", function (msg) { + // Immediately get our cursor onto this new person's screen: + if (lastMessage) { + session.send(lastMessage); + } + if (lastScrollMessage) { + session.send(lastScrollMessage); + } + }); + + function documentClick(event) { + if (event.togetherjsInternal) { + // This is an artificial internal event + return; + } + // FIXME: this might just be my imagination, but somehow I just + // really don't want to do anything at this stage of the event + // handling (since I'm catching every click), and I'll just do + // something real soon: + setTimeout(function () { + if (! TogetherJS.running) { + // This can end up running right after TogetherJS has been closed, often + // because TogetherJS was closed with a click... + return; + } + var element = event.target; + if (element == document.documentElement) { + // For some reason clicking on gives the element here + element = document.body; + } + if (elementFinder.ignoreElement(element)) { + return; + } + //Prevent click events on video objects to avoid conflicts with + //togetherjs's own video events + if (element.nodeName.toLowerCase() === 'video'){ + return; + } + + var dontShowClicks = TogetherJS.config.get("dontShowClicks"); + var cloneClicks = TogetherJS.config.get("cloneClicks"); + // If you dont want to clone the click for this element + // and you dont want to show the click for this element or you dont want to show any clicks + // then return to avoid sending a useless click + if ((! util.matchElement(element, cloneClicks)) && util.matchElement(element, dontShowClicks)) { + return; + } + var location = elementFinder.elementLocation(element); + var offset = $(element).offset(); + var offsetX = event.pageX - offset.left; + var offsetY = event.pageY - offset.top; + session.send({ + type: "cursor-click", + element: location, + offsetX: offsetX, + offsetY: offsetY + }); + if (util.matchElement(element, dontShowClicks)) { + return; + } + displayClick({top: event.pageY, left: event.pageX}, peers.Self.color); + }); + } + + var CLICK_TRANSITION_TIME = 3000; + + session.hub.on("cursor-click", function (pos) { + // When the click is calculated isn't always the same as how the + // last cursor update was calculated, so we force the cursor to + // the last location during a click: + if (! pos.sameUrl) { + // FIXME: if we *could have* done a local click, but we follow along + // later, we'll be in different states if that click was important. + // Mostly click cloning just won't work. + return; + } + Cursor.getClient(pos.clientId).updatePosition(pos); + var target = $(elementFinder.findElement(pos.element)); + var offset = target.offset(); + var top = offset.top + pos.offsetY; + var left = offset.left + pos.offsetX; + var cloneClicks = TogetherJS.config.get("cloneClicks"); + if (util.matchElement(target, cloneClicks)) { + eventMaker.performClick(target); + } + var dontShowClicks = TogetherJS.config.get("dontShowClicks"); + if (util.matchElement(target, dontShowClicks)) { + return; + } + displayClick({top: top, left: left}, pos.peer.color); + }); + + function displayClick(pos, color) { + // FIXME: should we hide the local click if no one else is going to see it? + // That means tracking who might be able to see our screen. + var element = templating.clone("click"); + $(document.body).append(element); + element.css({ + top: pos.top, + left: pos.left, + borderColor: color + }); + setTimeout(function () { + element.addClass("togetherjs-clicking"); + }, 100); + setTimeout(function () { + element.remove(); + }, CLICK_TRANSITION_TIME); + } + + var lastKeydown = 0; + var MIN_KEYDOWN_TIME = 500; + + function documentKeydown(event) { + setTimeout(function () { + var now = Date.now(); + if (now - lastKeydown < MIN_KEYDOWN_TIME) { + return; + } + lastKeydown = now; + // FIXME: is event.target interesting here? That is, *what* the + // user is typing into, not just that the user is typing? Also + // I'm assuming we don't care if the user it typing into a + // togetherjs-related field, since chat activity is as interesting + // as any other activity. + session.send({type: "keydown"}); + }); + } + + session.hub.on("keydown", function (msg) { + // FIXME: when the cursor is hidden there's nothing to show with setKeydown(). + var cursor = Cursor.getClient(msg.clientId); + cursor.setKeydown(); + }); + + util.testExpose({Cursor: Cursor}); + + return cursor; + +}); diff --git a/v3/js/togetherjs/togetherjs/elementFinder.js b/v3/js/togetherjs/togetherjs/elementFinder.js new file mode 100644 index 000000000..ec6fcb9de --- /dev/null +++ b/v3/js/togetherjs/togetherjs/elementFinder.js @@ -0,0 +1,254 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["util", "jquery"], function (util, $) { + var elementFinder = util.Module("elementFinder"); + var assert = util.assert; + + elementFinder.ignoreElement = function ignoreElement(el) { + if (el instanceof $) { + el = el[0]; + } + while (el) { + if ($(el).hasClass("togetherjs")) { + return true; + } + el = el.parentNode; + } + return false; + }; + + elementFinder.elementLocation = function elementLocation(el) { + assert(el !== null, "Got null element"); + if (el instanceof $) { + // a jQuery element + el = el[0]; + } + if (el[0] && el.attr && el[0].nodeType == 1) { + // Or a jQuery element not made by us + el = el[0]; + } + if (el.id) { + return "#" + el.id; + } + if (el.tagName == "BODY") { + return "body"; + } + if (el.tagName == "HEAD") { + return "head"; + } + if (el === document) { + return "document"; + } + var parent = el.parentNode; + if ((! parent) || parent == el) { + console.warn("elementLocation(", el, ") has null parent"); + throw new Error("No locatable parent found"); + } + var parentLocation = elementLocation(parent); + var children = parent.childNodes; + var _len = children.length; + var index = 0; + for (var i=0; i<_len; i++) { + if (children[i] == el) { + break; + } + if (children[i].nodeType == document.ELEMENT_NODE) { + if (children[i].className.indexOf("togetherjs") != -1) { + // Don't count our UI + continue; + } + // Don't count text or comments + index++; + } + } + return parentLocation + ":nth-child(" + (index+1) + ")"; + }; + + elementFinder.CannotFind = util.Class({ + constructor: function CannotFind(location, reason, context) { + this.prefix = ""; + this.location = location; + this.reason = reason; + this.context = context; + }, + toString: function () { + var loc; + try { + loc = elementFinder.elementLocation(this.context); + } catch (e) { + loc = this.context; + } + return ( + "[CannotFind " + this.prefix + + "(" + this.location + "): " + + this.reason + " in " + + loc + "]"); + } + }); + + elementFinder.findElement = function findElement(loc, container) { + // FIXME: should this all just be done with document.querySelector()? + // But no! We can't ignore togetherjs elements with querySelector. + // But maybe! We *could* make togetherjs elements less obtrusive? + container = container || document; + var el, rest; + if (loc === "body") { + return document.body; + } else if (loc === "head") { + return document.head; + } else if (loc === "document") { + return document; + } else if (loc.indexOf("body") === 0) { + el = document.body; + try { + return findElement(loc.substr(("body").length), el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "body" + e.prefix; + } + throw e; + } + } else if (loc.indexOf("head") === 0) { + el = document.head; + try { + return findElement(loc.substr(("head").length), el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "head" + e.prefix; + } + throw e; + } + } else if (loc.indexOf("#") === 0) { + var id; + loc = loc.substr(1); + if (loc.indexOf(":") === -1) { + id = loc; + rest = ""; + } else { + id = loc.substr(0, loc.indexOf(":")); + rest = loc.substr(loc.indexOf(":")); + } + el = document.getElementById(id); + if (! el) { + throw elementFinder.CannotFind("#" + id, "No element by that id", container); + } + if (rest) { + try { + return findElement(rest, el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "#" + id + e.prefix; + } + throw e; + } + } else { + return el; + } + } else if (loc.indexOf(":nth-child(") === 0) { + loc = loc.substr((":nth-child(").length); + if (loc.indexOf(")") == -1) { + throw "Invalid location, missing ): " + loc; + } + var num = loc.substr(0, loc.indexOf(")")); + num = parseInt(num, 10); + var count = num; + loc = loc.substr(loc.indexOf(")") + 1); + var children = container.childNodes; + el = null; + for (var i=0; i height) { + return false; + } + last = el; + }); + if ((! children.length) || (! last)) { + // There are no children, or only inapplicable children + return { + location: elementFinder.elementLocation(start[0]), + offset: height - start.offset().top, + absoluteTop: height, + documentHeight: $(document).height() + }; + } + return search(last, height); + } + return search($(document.body), height); + }; + + elementFinder.pixelForPosition = function (position) { + /* Inverse of elementFinder.elementByPixel */ + if (position.location == "body") { + return position.offset; + } + var el; + try { + el = elementFinder.findElement(position.location); + } catch (e) { + if (e instanceof elementFinder.CannotFind && position.absoluteTop) { + // We don't trust absoluteTop to be quite right locally, so we adjust + // for the total document height differences: + var percent = position.absoluteTop / position.documentHeight; + return $(document).height() * percent; + } + throw e; + } + var top = $(el).offset().top; + // FIXME: maybe here we should test for sanity, like if an element is + // hidden. We can use position.absoluteTop to get a sense of where the + // element roughly should be. If the sanity check failed we'd use + // absoluteTop + return top + position.offset; + }; + + return elementFinder; + +}); diff --git a/v3/js/togetherjs/togetherjs/eventMaker.js b/v3/js/togetherjs/togetherjs/eventMaker.js new file mode 100644 index 000000000..fed95831a --- /dev/null +++ b/v3/js/togetherjs/togetherjs/eventMaker.js @@ -0,0 +1,56 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["jquery", "util"], function ($, util) { + var eventMaker = util.Module("eventMaker"); + + eventMaker.performClick = function (target) { + // FIXME: should accept other parameters, like Ctrl/Alt/etc + var event = document.createEvent("MouseEvents"); + event.initMouseEvent( + "click", // type + true, // canBubble + true, // cancelable + window, // view + 0, // detail + 0, // screenX + 0, // screenY + 0, // clientX + 0, // clientY + false, // ctrlKey + false, // altKey + false, // shiftKey + false, // metaKey + 0, // button + null // relatedTarget + ); + // FIXME: I'm not sure this custom attribute always propagates? + // seems okay in Firefox/Chrome, but I've had problems with + // setting attributes on keyboard events in the past. + event.togetherjsInternal = true; + target = $(target)[0]; + var cancelled = target.dispatchEvent(event); + if (cancelled) { + return; + } + if (target.tagName == "A") { + var href = target.href; + if (href) { + location.href = href; + return; + } + } + // FIXME: should do button clicks (like a form submit) + // FIXME: should run .onclick() as well + }; + + eventMaker.fireChange = function (target) { + target = $(target)[0]; + var event = document.createEvent("HTMLEvents"); + event.initEvent("change", true, true); + target.dispatchEvent(event); + }; + + return eventMaker; +}); diff --git a/v3/js/togetherjs/togetherjs/fonts/OpenSans-Bold.ttf b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Bold.ttf new file mode 100644 index 000000000..fd79d43be Binary files /dev/null and b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Bold.ttf differ diff --git a/v3/js/togetherjs/togetherjs/fonts/OpenSans-Light.ttf b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Light.ttf new file mode 100644 index 000000000..0d381897d Binary files /dev/null and b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Light.ttf differ diff --git a/v3/js/togetherjs/togetherjs/fonts/OpenSans-Regular.ttf b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Regular.ttf new file mode 100644 index 000000000..db433349b Binary files /dev/null and b/v3/js/togetherjs/togetherjs/fonts/OpenSans-Regular.ttf differ diff --git a/v3/js/togetherjs/togetherjs/forms.js b/v3/js/togetherjs/togetherjs/forms.js new file mode 100644 index 000000000..c9203db05 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/forms.js @@ -0,0 +1,851 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["jquery", "util", "session", "elementFinder", "eventMaker", "templating", "ot"], function ($, util, session, elementFinder, eventMaker, templating, ot) { + var forms = util.Module("forms"); + var assert = util.assert; + + // This is how much larger the focus element is than the element it surrounds + // (this is padding on each side) + var FOCUS_BUFFER = 5; + + var inRemoteUpdate = false; + + function suppressSync(element) { + var ignoreForms = TogetherJS.config.get("ignoreForms"); + if (ignoreForms === true) { + return true; + } + else { + return $(element).is(ignoreForms.join(",")); + } + } + + function maybeChange(event) { + // Called when we get an event that may or may not indicate a real change + // (like keyup in a textarea) + var tag = event.target.tagName; + if (tag == "TEXTAREA" || tag == "INPUT") { + change(event); + } + } + + function change(event) { + sendData({ + element: event.target, + value: getValue(event.target) + }); + } + + function sendData(attrs) { + var el = $(attrs.element); + assert(el); + var tracker = attrs.tracker; + var value = attrs.value; + if (inRemoteUpdate) { + return; + } + if (elementFinder.ignoreElement(el) || + (elementTracked(el) && !tracker) || + suppressSync(el)) { + return; + } + var location = elementFinder.elementLocation(el); + var msg = { + type: "form-update", + element: location + }; + if (isText(el) || tracker) { + var history = el.data("togetherjsHistory"); + if (history) { + if (history.current == value) { + return; + } + var delta = ot.TextReplace.fromChange(history.current, value); + assert(delta); + history.add(delta); + maybeSendUpdate(msg.element, history, tracker); + return; + } else { + msg.value = value; + msg.basis = 1; + el.data("togetherjsHistory", ot.SimpleHistory(session.clientId, value, 1)); + } + } else { + msg.value = value; + } + session.send(msg); + } + + function isCheckable(el) { + el = $(el); + var type = (el.prop("type") || "text").toLowerCase(); + if (el.prop("tagName") == "INPUT" && ["radio", "checkbox"].indexOf(type) != -1) { + return true; + } + return false; + } + + var editTrackers = {}; + var liveTrackers = []; + + TogetherJS.addTracker = function (TrackerClass, skipSetInit) { + assert(typeof TrackerClass === "function", "You must pass in a class"); + assert(typeof TrackerClass.prototype.trackerName === "string", + "Needs a .prototype.trackerName string"); + // Test for required instance methods. + "destroy update init makeInit tracked".split(/ /).forEach(function(m) { + assert(typeof TrackerClass.prototype[m] === "function", + "Missing required tracker method: "+m); + }); + // Test for required class methods. + "scan tracked".split(/ /).forEach(function(m) { + assert(typeof TrackerClass[m] === "function", + "Missing required tracker class method: "+m); + }); + editTrackers[TrackerClass.prototype.trackerName] = TrackerClass; + if (!skipSetInit) { + setInit(); + } + }; + + var AceEditor = util.Class({ + + trackerName: "AceEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert($(this.element).hasClass("ace_editor")); + this._change = this._change.bind(this); + this._editor().document.on("change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().document.removeListener("change", this._change); + }, + + update: function (msg) { + this._editor().document.setValue(msg.value); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this._editor().document.getValue() + }; + }, + + _editor: function () { + return this.element.env; + }, + + _change: function (e) { + // FIXME: I should have an internal .send() function that automatically + // asserts !inRemoteUpdate, among other things + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + getContent: function() { + return this._editor().document.getValue(); + } + }); + + AceEditor.scan = function () { + return $(".ace_editor"); + }; + + AceEditor.tracked = function (el) { + return !! $(el).closest(".ace_editor").length; + }; + + TogetherJS.addTracker(AceEditor, true /* skip setInit */); + + var CodeMirrorEditor = util.Class({ + trackerName: "CodeMirrorEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert(this.element.CodeMirror); + this._change = this._change.bind(this); + this._editor().on("change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().off("change", this._change); + }, + + update: function (msg) { + this._editor().setValue(msg.value); + }, + + init: function (msg) { + if (msg.value) { + this.update(msg); + } + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this._editor().getValue() + }; + }, + + _change: function (editor, change) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + return this.element.CodeMirror; + }, + + getContent: function() { + return this._editor().getValue(); + } + }); + + CodeMirrorEditor.scan = function () { + var result = []; + var els = document.body.getElementsByTagName("*"); + var _len = els.length; + for (var i=0; i<_len; i++) { + var el = els[i]; + if (el.CodeMirror) { + result.push(el); + } + } + return $(result); + }; + + CodeMirrorEditor.tracked = function (el) { + el = $(el)[0]; + while (el) { + if (el.CodeMirror) { + return true; + } + el = el.parentNode; + } + return false; + }; + + TogetherJS.addTracker(CodeMirrorEditor, true /* skip setInit */); + + var CKEditor = util.Class({ + trackerName: "CKEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert(CKEDITOR); + assert(CKEDITOR.dom.element.get(this.element)); + this._change = this._change.bind(this); + // FIXME: change event is available since CKEditor 4.2 + this._editor().on("change", this._change); + }, + tracked: function (el) { + return this.element === $(el)[0]; + }, + destroy: function (el) { + this._editor().removeListener("change", this._change); + }, + + update: function (msg) { + //FIXME: use setHtml instead of setData to avoid frame reloading overhead + this._editor().editable().setHtml(msg.value); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this.getContent() + }; + }, + + _change: function (e) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + return CKEDITOR.dom.element.get(this.element).getEditor(); + }, + + getContent: function () { + return this._editor().getData(); + } + }); + + CKEditor.scan = function () { + var result = []; + if (typeof CKEDITOR == "undefined") { + return; + } + var editorInstance; + for (var instanceIdentifier in CKEDITOR.instances) { + editorInstance = document.getElementById(instanceIdentifier) || document.getElementsByName(instanceIdentifier)[0]; + if (editorInstance) { + result.push(editorInstance); + } + } + return $(result); + }; + + CKEditor.tracked = function (el) { + if (typeof CKEDITOR == "undefined") { + return false; + } + el = $(el)[0]; + return !! (CKEDITOR.dom.element.get(el) && CKEDITOR.dom.element.get(el).getEditor()); + }; + + TogetherJS.addTracker(CKEditor, true /* skip setInit */); + + //////////////////// BEGINNING OF TINYMCE //////////////////////// + var tinymceEditor = util.Class({ + trackerName: "tinymceEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert($(this.element).attr('id').indexOf('mce_') != -1); + this._change = this._change.bind(this); + this._editor().on("input keyup cut paste change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().destory(); + }, + + update: function (msg) { + this._editor().setContent(msg.value, {format: 'raw'}); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this.getContent() + }; + }, + + _change: function (e) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + if (typeof tinymce == "undefined") { + return; + } + return $(this.element).data("tinyEditor"); + }, + + getContent: function () { + return this._editor().getContent(); + } + }); + + tinymceEditor.scan = function () { + //scan all the elements that contain tinyMCE editors + if (typeof tinymce == "undefined") { + return; + } + var result = []; + $(window.tinymce.editors).each(function (i, ed) { + result.push($('#'+ed.id)); + //its impossible to retrieve a single editor from a container, so lets store it + $('#'+ed.id).data("tinyEditor", ed); + }); + return $(result); + }; + + tinymceEditor.tracked = function (el) { + if (typeof tinymce == "undefined") { + return false; + } + el = $(el)[0]; + return !!$(el).data("tinyEditor"); + /*var flag = false; + $(window.tinymce.editors).each(function (i, ed) { + if (el.id == ed.id) { + flag = true; + } + }); + return flag;*/ + }; + + TogetherJS.addTracker(tinymceEditor, true); + ///////////////// END OF TINYMCE /////////////////////////////////// + + function buildTrackers() { + assert(! liveTrackers.length); + util.forEachAttr(editTrackers, function (TrackerClass) { + var els = TrackerClass.scan(); + if (els) { + $.each(els, function () { + var tracker = new TrackerClass(this); + $(this).data("togetherjsHistory", ot.SimpleHistory(session.clientId, tracker.getContent(), 1)); + liveTrackers.push(tracker); + }); + } + }); + } + + function destroyTrackers() { + liveTrackers.forEach(function (tracker) { + tracker.destroy(); + }); + liveTrackers = []; + } + + function elementTracked(el) { + var result = false; + util.forEachAttr(editTrackers, function (TrackerClass) { + if (TrackerClass.tracked(el)) { + result = true; + } + }); + return result; + } + + function getTracker(el, name) { + el = $(el)[0]; + for (var i=0; i +/help : this message +/test : run an automated/randomized test (or stop one that is in progress) + /test start N : run N times (instead of default 100) + /test show : show what kind of actions the random test would take (or stop showing) + /test describe : describe the possible actions (instead of showing them) +/clear : clear the chat area +/record : open up a recorder for the session +/playback URL : play back a session that was recorded (it's up to you to figure out how to host it) + /playback local:NAME : play a locally saved log +/savelogs NAME : save the currently recorded logs under NAME (recorder must be open) +/baseurl : set a local baseUrl to load TogetherJS from, for debugging a development version of TogetherJS. +/config : override some TogetherJS configuration parameters + /config VAR VALUE : set TogetherJS.config("VAR", VALUE). VALUE must be a legal Javascript/JSON literal. + /config clear : remove all overridden configuration diff --git a/v3/js/togetherjs/togetherjs/images/btn-menu-change-avatar.png b/v3/js/togetherjs/togetherjs/images/btn-menu-change-avatar.png new file mode 100644 index 000000000..1efef1c0d Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/btn-menu-change-avatar.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-chat-active.png b/v3/js/togetherjs/togetherjs/images/button-chat-active.png new file mode 100644 index 000000000..bd340acad Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-chat-active.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-chat.png b/v3/js/togetherjs/togetherjs/images/button-chat.png new file mode 100644 index 000000000..c5912f139 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-chat.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-end-session.png b/v3/js/togetherjs/togetherjs/images/button-end-session.png new file mode 100644 index 000000000..84fb19548 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-end-session.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-mic-active.png b/v3/js/togetherjs/togetherjs/images/button-mic-active.png new file mode 100644 index 000000000..77a400f5a Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-mic-active.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-mic-inactive.png b/v3/js/togetherjs/togetherjs/images/button-mic-inactive.png new file mode 100644 index 000000000..417d07d49 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-mic-inactive.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-mic.png b/v3/js/togetherjs/togetherjs/images/button-mic.png new file mode 100644 index 000000000..3d2fc2e85 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-mic.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-pencil.png b/v3/js/togetherjs/togetherjs/images/button-pencil.png new file mode 100644 index 000000000..737604524 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-pencil.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-share-active.png b/v3/js/togetherjs/togetherjs/images/button-share-active.png new file mode 100644 index 000000000..34e944c26 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-share-active.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-share-hover.png b/v3/js/togetherjs/togetherjs/images/button-share-hover.png new file mode 100644 index 000000000..37638832c Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-share-hover.png differ diff --git a/v3/js/togetherjs/togetherjs/images/button-share.png b/v3/js/togetherjs/togetherjs/images/button-share.png new file mode 100644 index 000000000..c6a22c939 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/button-share.png differ diff --git a/v3/js/togetherjs/togetherjs/images/connect-logo@2x.png b/v3/js/togetherjs/togetherjs/images/connect-logo@2x.png new file mode 100644 index 000000000..0af56c7d2 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/connect-logo@2x.png differ diff --git a/v3/js/togetherjs/togetherjs/images/cursor-white.png b/v3/js/togetherjs/togetherjs/images/cursor-white.png new file mode 100644 index 000000000..b2781fc69 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/cursor-white.png differ diff --git a/v3/js/togetherjs/togetherjs/images/cursor.svg b/v3/js/togetherjs/togetherjs/images/cursor.svg new file mode 100644 index 000000000..1d078393c --- /dev/null +++ b/v3/js/togetherjs/togetherjs/images/cursor.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/v3/js/togetherjs/togetherjs/images/default-avatar-waiting.png b/v3/js/togetherjs/togetherjs/images/default-avatar-waiting.png new file mode 100644 index 000000000..8fd60c93f Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/default-avatar-waiting.png differ diff --git a/v3/js/togetherjs/togetherjs/images/default-avatar.png b/v3/js/togetherjs/togetherjs/images/default-avatar.png new file mode 100644 index 000000000..e2cc96df2 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/default-avatar.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-arrow-up.png b/v3/js/togetherjs/togetherjs/images/icn-arrow-up.png new file mode 100644 index 000000000..6d8d39c41 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-arrow-up.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-gear.png b/v3/js/togetherjs/togetherjs/images/icn-gear.png new file mode 100644 index 000000000..093e7d55d Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-gear.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-handle-circle.png b/v3/js/togetherjs/togetherjs/images/icn-handle-circle.png new file mode 100644 index 000000000..3ba8dba2a Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-handle-circle.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-handle-circle@2x.png b/v3/js/togetherjs/togetherjs/images/icn-handle-circle@2x.png new file mode 100644 index 000000000..909331cb7 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-handle-circle@2x.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-triangle-up.png b/v3/js/togetherjs/togetherjs/images/icn-triangle-up.png new file mode 100644 index 000000000..502bf48e9 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-triangle-up.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l-hover.png b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l-hover.png new file mode 100644 index 000000000..e16e9b1df Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l-hover.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l.png b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l.png new file mode 100644 index 000000000..2ac61e0a7 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-l.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r-hover.png b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r-hover.png new file mode 100644 index 000000000..d99a90183 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r-hover.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r.png b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r.png new file mode 100644 index 000000000..8e2227e6b Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icn-walkthrough-arrow-r.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icon-close-active.png b/v3/js/togetherjs/togetherjs/images/icon-close-active.png new file mode 100644 index 000000000..38aac86f8 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icon-close-active.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icon-close-active@2x.png b/v3/js/togetherjs/togetherjs/images/icon-close-active@2x.png new file mode 100644 index 000000000..68587cb01 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icon-close-active@2x.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icon-close.png b/v3/js/togetherjs/togetherjs/images/icon-close.png new file mode 100644 index 000000000..d3b00e148 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icon-close.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icon-close@2x.png b/v3/js/togetherjs/togetherjs/images/icon-close@2x.png new file mode 100644 index 000000000..f71e16b43 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icon-close@2x.png differ diff --git a/v3/js/togetherjs/togetherjs/images/icon-profile-triangle.png b/v3/js/togetherjs/togetherjs/images/icon-profile-triangle.png new file mode 100644 index 000000000..32828384a Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/icon-profile-triangle.png differ diff --git a/v3/js/togetherjs/togetherjs/images/notification-btn-close.png b/v3/js/togetherjs/togetherjs/images/notification-btn-close.png new file mode 100644 index 000000000..35a21631d Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/notification-btn-close.png differ diff --git a/v3/js/togetherjs/togetherjs/images/notification-btn-close@2x.png b/v3/js/togetherjs/togetherjs/images/notification-btn-close@2x.png new file mode 100644 index 000000000..3c6ed7cfa Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/notification-btn-close@2x.png differ diff --git a/v3/js/togetherjs/togetherjs/images/notification-togetherjs-logo.png b/v3/js/togetherjs/togetherjs/images/notification-togetherjs-logo.png new file mode 100644 index 000000000..1fb20b9a9 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/notification-togetherjs-logo.png differ diff --git a/v3/js/togetherjs/togetherjs/images/notification.ogg b/v3/js/togetherjs/togetherjs/images/notification.ogg new file mode 100644 index 000000000..8d4dc4108 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/notification.ogg differ diff --git a/v3/js/togetherjs/togetherjs/images/robot-avatar.png b/v3/js/togetherjs/togetherjs/images/robot-avatar.png new file mode 100644 index 000000000..15a7ba0b7 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/robot-avatar.png differ diff --git a/v3/js/togetherjs/togetherjs/images/togetherjs-logo-close.png b/v3/js/togetherjs/togetherjs/images/togetherjs-logo-close.png new file mode 100644 index 000000000..86aed58be Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/togetherjs-logo-close.png differ diff --git a/v3/js/togetherjs/togetherjs/images/togetherjs-logo-open.png b/v3/js/togetherjs/togetherjs/images/togetherjs-logo-open.png new file mode 100644 index 000000000..a0d30133b Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/togetherjs-logo-open.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-chat.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-chat.png new file mode 100644 index 000000000..ddc775bde Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-chat.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-intro.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-intro.png new file mode 100644 index 000000000..9612aab38 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-intro.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-invite.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-invite.png new file mode 100644 index 000000000..b18f9914a Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-invite.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-logo.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-logo.png new file mode 100644 index 000000000..c4c75d112 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-logo.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-participant.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-participant.png new file mode 100644 index 000000000..da974daae Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-participant.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-profile.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-profile.png new file mode 100644 index 000000000..55b2c49b9 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-profile.png differ diff --git a/v3/js/togetherjs/togetherjs/images/walkthrough-images-rtc.png b/v3/js/togetherjs/togetherjs/images/walkthrough-images-rtc.png new file mode 100644 index 000000000..3b6c6b257 Binary files /dev/null and b/v3/js/togetherjs/togetherjs/images/walkthrough-images-rtc.png differ diff --git a/v3/js/togetherjs/togetherjs/interface.html b/v3/js/togetherjs/togetherjs/interface.html new file mode 100644 index 000000000..56880fb7e --- /dev/null +++ b/v3/js/togetherjs/togetherjs/interface.html @@ -0,0 +1,554 @@ +<% /* + This is basically all the markup and interface for TogetherJS. + Note all links should be like http://localhost:8080/togetherjs/* + these links are rewritten with the location where TogetherJS was deployed. + + This file is inlined into togetherjs/templates.js +*/ %> +
      + + +
      +
      + + drag + + + drag + +
      +
      +
      + +
      + + + + +
      +
      +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + +
      +
      + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      {{ gettext('Following to new URL...') }}
      +
      +
      + {{ gettext('Following') }} + + {{ gettext( "to" ) }} +
      +
      + + +
      +
      +
      + + {{ gettext('has invited') }} {{ gettext('anyone') }} + {{ gettext('you') }} + {{ gettext( "to" ) }} +
      +
      + +
      + + + + + + + + + +
      + + +
      + + + + + + + + + + + + + + + + + + +
      + + +
      +
      +
      + + +
      +
      +
      +
      diff --git a/v3/js/togetherjs/togetherjs/jqueryPlugins.js b/v3/js/togetherjs/togetherjs/jqueryPlugins.js new file mode 100644 index 000000000..9721f6c4b --- /dev/null +++ b/v3/js/togetherjs/togetherjs/jqueryPlugins.js @@ -0,0 +1,330 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["jquery"], function ($) { + // This isn't really a "module" since it just patches jQuery itself + + // FIX ME Animations TO DO + // walkthrough animations go here + // animate participant cursor and box popping in when they enter the session + // animate participant cursor and box popping out when they leave the session + // animate the participant cursor -> rotate down when they're down the page + $.fn.rotateCursorDown = function () { + $('svg').animate({borderSpacing: -150, opacity: 1}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'rotate('+now+'deg)') + .css('-moz-transform', 'rotate('+now+'deg)') + .css('-ms-transform', 'rotate('+now+'deg)') + .css('-o-transform', 'rotate('+now+'deg)') + .css('transform', 'rotate('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + }; + + // animate the participant cursor -> rotate up when they're on the same frame as the user + $.fn.rotateCursorDown = function () { + $('.togetherjs-cursor svg').animate({borderSpacing: 0, opacity: 1}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'rotate('+now+'deg)') + .css('-moz-transform', 'rotate('+now+'deg)') + .css('-ms-transform', 'rotate('+now+'deg)') + .css('-o-transform', 'rotate('+now+'deg)') + .css('transform', 'rotate('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + }; + + // Move notification when another notification slides in // + + + /* Pop in window from dock button: */ + $.fn.popinWindow = function () { + + //mobile popout window with no animation + if($.browser.mobile) { + + //starting position + this.css({ + left: "0px", + opacity: 1, + "zIndex": 8888 + }); + + //starting position for arrow + $('#togetherjs-window-pointer-right').css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //animate arrow out + $('#togetherjs-window-pointer-right').animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + $('#togetherjs-window-pointer-right').queue(); + + //bounce arrow back + $('#togetherjs-window-pointer-right').animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + //animate window out + this.animate({ + opacity: 1, + left: "0px" + }, { + duration:60, easing:"linear" + }); + this.queue(); + + //bounce window back + this.animate({ + left:'0px' + }, { + duration:60, easing:"linear" + }); + } + + else { + + //starting position + this.css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //starting position for arrow + $('#togetherjs-window-pointer-right').css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //animate arrow out + $('#togetherjs-window-pointer-right').animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + $('#togetherjs-window-pointer-right').queue(); + + //bounce arrow back + $('#togetherjs-window-pointer-right').animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + //animate window out + this.animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + this.queue(); + + //bounce window back + this.animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + } + + }; + + /* Slide in notification window: */ + $.fn.slideIn = function () { + this.css({ + //top: "240px", + left: "+=74px", + opacity: 0, + "zIndex": 8888 + }); + return this.animate({ + "left": "-=74px", + opacity: 1, + "zIndex": 9999 + }, "fast"); + }; + + /* Used to fade away notification windows + flip the bottom of them out: */ + $.fn.fadeOut = function () { + this.animate({borderSpacing: -90, opacity: 0.5}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-moz-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-ms-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-o-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('transform', 'perspective( 600px ) rotateX('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + return this; + }; + + /* used when user goes down to participant cursor location on screen */ + $.fn.easeTo = function (y) { + return this.animate({ + scrollTop: y + }, { + duration: 400, + easing: "swing" + }); + }; + + // avatar animate in + $.fn.animateDockEntry = function () { + var height = this.height(); + var width = this.width(); + var backgroundSize = height + 4; + var margin = parseInt(this.css("marginLeft"), 10); + + // set starting position CSS for avatar + this.css({ + marginLeft: margin + width/2, + height: 0, + width: 0, + backgroundSize: "0 0" + }); + + var self = this; + + //then animate avatar to the actual dimensions, and reset the values + this.animate({ + marginLeft: margin, + height: height, + width: width, + backgroundSize: backgroundSize + }, { + duration: 600 + }).promise().then(function () { + self.css({ + marginLeft: "", + height: "", + width: "", + backgroundSize: "" + }); + }); + return this; + }; + + // avatar animate out, reverse of above + $.fn.animateDockExit = function () { + + // get the current avatar dimenensions + var height = this.height(); + var width = this.width(); + var backgroundSize = height + 4; + var margin = parseInt(this.css("marginLeft"), 10); + + //then animate avatar to shrink to nothing, and reset the values again + // FIXME this needs to animate from the CENTER + this.animate({ + marginLeft: margin + width/2, + height: 0, + width: 0, + backgroundSize: "0 0", + opacity: 0 + }, 600 ); + + return this; + + }; + + $.fn.animateCursorEntry = function () { + // Make the cursor bubble pop in + }; + + // keyboard typing animation + $.fn.animateKeyboard = function () { + var one = this.find(".togetherjs-typing-ellipse-one"); + var two = this.find(".togetherjs-typing-ellipse-two"); + var three = this.find(".togetherjs-typing-ellipse-three"); + var count = -1; + var run = (function () { + count = (count+1) % 4; + if (count === 0) { + one.css("opacity", 0.5); + two.css("opacity", 0.5); + three.css("opacity", 0.5); + } else if (count == 1) { + one.css("opacity", 1); + } else if (count == 2) { + two.css("opacity", 1); + } else { // count==3 + three.css("opacity", 1); + } + }).bind(this); + run(); + var interval = setInterval(run, 300); + this.data("animateKeyboard", interval); + }; + + $.fn.stopKeyboardAnimation = function () { + clearTimeout(this.data("animateKeyboard")); + this.data("animateKeyboard", null); + }; + + // FIXME: not sure if this is legit, but at least the modern mobile devices we + // care about should have this defined: + if (! $.browser) { + $.browser = {}; + } + $.browser.mobile = window.orientation !== undefined; + if (navigator.userAgent.search(/mobile/i) != -1) { + // FIXME: At least on the Firefox OS simulator I need this + $.browser.mobile = true; + } + + if ($.browser.mobile && window.matchMedia && ! window.matchMedia("screen and (max-screen-width: 480px)").matches) { + // FIXME: for Firefox OS simulator really: + document.body.className += " togetherjs-mobile-browser"; + } + +}); diff --git a/v3/js/togetherjs/togetherjs/libs/almond.js b/v3/js/togetherjs/togetherjs/libs/almond.js new file mode 100644 index 000000000..28ed81add --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/almond.js @@ -0,0 +1,405 @@ +/** + * almond 0.2.5 Copyright (c) 2011-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that "directory" and not name of the baseName's + //module. For instance, baseName of "one/two/three", maps to + //"one/two/three.js", but we want the directory, "one/two" for + //this normalization. + baseParts = baseParts.slice(0, baseParts.length - 1); + + name = baseParts.concat(name.split("/")); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (typeof callback === 'function') { + + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback.apply(defined[name], args); + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + config = cfg; + if (config.deps) { + req(config.deps, config.callback); + } + return req; + }; + + define = function (name, deps, callback) { + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); diff --git a/v3/js/togetherjs/togetherjs/libs/jquery-1.8.3.min.js b/v3/js/togetherjs/togetherjs/libs/jquery-1.8.3.min.js new file mode 100644 index 000000000..e60a9c456 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/jquery-1.8.3.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function (){ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
      a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
      t
      ",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
      ",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
      ",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

      ",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
      ","
      "]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
      ").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); +jQuery.noConflict(true); +})(); diff --git a/v3/js/togetherjs/togetherjs/libs/require-nomin.js b/v3/js/togetherjs/togetherjs/libs/require-nomin.js new file mode 100644 index 000000000..52c2b076b --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/require-nomin.js @@ -0,0 +1,2053 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.8 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.8', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + apsp = ap.splice, + isBrowser = !!(typeof window !== 'undefined' && navigator && window.document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + function getOwn(obj, prop) { + return hasProp(obj, prop) && obj[prop]; + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (hasProp(obj, prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value !== 'string') { + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + function defaultOnError(err) { + throw err; + } + + //Allow getting a global that expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite and existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + //Defaults. Do not set a default for map + //config to speed up normalize(), which + //will run faster if there is no default. + waitSeconds: 7, + baseUrl: './', + paths: {}, + pkgs: {}, + shim: {}, + config: {} + }, + registry = {}, + //registry of just enabled modules, to speed + //cycle breaking code when lots of modules + //are registered, but not activated. + enabledRegistry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; ary[i]; i += 1) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment, + foundMap, foundI, foundStarMap, starI, + baseParts = baseName && baseName.split('/'), + normalizedBaseParts = baseParts, + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + if (getOwn(config.pkgs, baseName)) { + //If the baseName is a package name, then just treat it as one + //name to concat the name with. + normalizedBaseParts = baseParts = [baseName]; + } else { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + } + + name = normalizedBaseParts.concat(name.split('/')); + trimDots(name); + + //Some use of packages may use a . path to reference the + //'main' module name, so normalize for that. + pkgConfig = getOwn(config.pkgs, (pkgName = name[0])); + name = name.join('/'); + if (pkgConfig && name === pkgName + '/' + pkgConfig.main) { + name = pkgName; + } + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if (applyMap && map && (baseParts || starMap)) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = getOwn(map, baseParts.slice(0, j).join('/')); + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = getOwn(mapValue, nameSegment); + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { + foundStarMap = getOwn(starMap, nameSegment); + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = getOwn(config.paths, id); + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + removeScript(id); + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + context.require([id]); + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = getOwn(defined, prefix); + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + normalizedName = normalize(name, parentName, applyMap); + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + mod = getModule(depMap); + if (mod.error && name === 'error') { + fn(mod.error); + } else { + mod.on(name, fn); + } + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = getOwn(registry, id); + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + //Array splice in the values since the context code has a + //local var ref to defQueue, so cannot just reassign the one + //on context. + apsp.apply(defQueue, + [defQueue.length - 1, 0].concat(globalDefQueue)); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return mod.exports; + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + var c, + pkg = getOwn(config.pkgs, mod.map.id); + // For packages, only support config targeted + // at the main module. + c = pkg ? getOwn(config.config, mod.map.id + '/' + pkg.main) : + getOwn(config.config, mod.map.id); + return c || {}; + }, + exports: defined[mod.map.id] + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + delete enabledRegistry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = getOwn(registry, depId); + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (getOwn(traced, depId)) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var map, modId, err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(enabledRegistry, function (mod) { + map = mod.map; + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = getOwn(undefEvents, map.id) || {}; + this.map = map; + this.shim = getOwn(config.shim, map.id); + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks if the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + this.fetch(); + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. However, + //only do it for define()'d modules. require + //errbacks should not be called for failures in + //their callbacks (#699). However if a global + //onError is set, use that. + if ((this.events.error && this.map.isDefine) || + req.onError !== defaultOnError) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + if (this.map.isDefine) { + //If setting exports via 'module' is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + cjsModule = this.module; + if (cjsModule && + cjsModule.exports !== undefined && + //Make sure it is not already the exports value + cjsModule.exports !== this.exports) { + exports = cjsModule.exports; + } else if (exports === undefined && this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = this.map.isDefine ? [this.map.id] : null; + err.requireType = this.map.isDefine ? 'define' : 'require'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + req.onResourceLoad(context, this.map, this.depMaps); + } + } + + //Clean up + cleanRegistry(id); + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = getOwn(registry, normalizedMap.id); + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + //Transfer any config to this other module. + if (hasProp(config.config, id)) { + config.config[moduleName] = config.config[id]; + } + + try { + req.exec(text); + } catch (e) { + return onError(makeError('fromtexteval', + 'fromText eval for ' + id + + ' failed: ' + e, + e, + [id])); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + enabledRegistry[this.map.id] = this; + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = getOwn(handlers, depMap.id); + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', bind(this, this.errback)); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!hasProp(handlers, id) && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = getOwn(registry, pluginMap.id); + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + //Skip modules already defined. + if (!hasProp(defined, args[0])) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + onError: onError, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths and packages since they require special processing, + //they are additive. + var pkgs = config.pkgs, + shim = config.shim, + objs = { + paths: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (prop === 'map') { + if (!config.map) { + config.map = {}; + } + mixin(config[prop], value, true, true); + } else { + mixin(config[prop], value, true); + } + } else { + config[prop] = value; + } + }); + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if ((value.exports || value.init) && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location; + + pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + location = pkgObj.location; + + //Create a brand new object on pkgs, since currentPackages can + //be passed in again, and config.pkgs is the internal transformed + //state for all package configs. + pkgs[pkgObj.name] = { + name: pkgObj.name, + location: location || pkgObj.name, + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + main: (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, '') + }; + }); + + //Done with modifications, assing packages back to context config + config.pkgs = pkgs; + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || (value.exports && getGlobal(value.exports)); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && hasProp(handlers, deps)) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap, localRequire); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var ext, + index = moduleNamePlusExt.lastIndexOf('.'), + segment = moduleNamePlusExt.split('/')[0], + isRelative = segment === '.' || segment === '..'; + + //Have a file extension alias, and it is not the + //dots from a relative path. + if (index !== -1 && (!isRelative || index > 1)) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext, true); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = getOwn(registry, id); + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. A second arg, parent, the parent module, + * is passed in for context, when this method is overriden by + * the optimizer. Not shown here to keep code compact. + */ + enable: function (depMap) { + var mod = getOwn(registry, depMap.id); + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = getOwn(config.shim, moduleName) || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = getOwn(registry, moduleName); + + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext, skipExt) { + var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, + parentPath; + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + pkgs = config.pkgs; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + pkg = getOwn(pkgs, parentModule); + parentPath = getOwn(paths, parentModule); + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } else if (pkg) { + //If module name is just the package name, then looking + //for the main module. + if (moduleName === pkg.name) { + pkgPath = pkg.location + '/' + pkg.main; + } else { + pkgPath = pkg.location; + } + syms.splice(0, i, pkgPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/\?/.test(url) || skipExt ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callback function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + return onError(makeError('scripterror', 'Script error for: ' + data.id, evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = getOwn(contexts, contextName); + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = defaultOnError; + + /** + * Creates the node for the load command. Only used in browser envs. + */ + req.createNode = function (config, moduleName, url) { + var node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + return node; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = req.createNode(config, moduleName, url); + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEventListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + try { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation that a build has been done so that + //only one script needs to be loaded anyway. This may need to be + //reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } catch (e) { + context.onError(makeError('importscripts', + 'importScripts failed for ' + + moduleName + ' at ' + url, + e, + [moduleName])); + } + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Preserve dataMain in case it is a path (i.e. contains '?') + mainScript = dataMain; + + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = mainScript.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + } + + //Strip off any trailing .js since mainScript is now + //like a module name. + mainScript = mainScript.replace(jsSuffixRegExp, ''); + + //If mainScript is still a path, fall back to dataMain + if (req.jsExtRegExp.test(mainScript)) { + mainScript = dataMain; + } + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = null; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps && isFunction(callback)) { + deps = []; + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); + }; + + define.amd = { + jQuery: true + }; + + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); diff --git a/v3/js/togetherjs/togetherjs/libs/require.js b/v3/js/togetherjs/togetherjs/libs/require.js new file mode 100644 index 000000000..7ff409d9c --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/require.js @@ -0,0 +1,36 @@ +/* + RequireJS 2.1.8 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + Available via the MIT or new BSD license. + see: http://github.com/jrburke/requirejs for details +*/ +var requirejs,require,define; +(function(Z){function H(b){return"[object Function]"===L.call(b)}function I(b){return"[object Array]"===L.call(b)}function y(b,c){if(b){var d;for(d=0;dthis.depCount&&!this.defined){if(H(m)){if(this.events.error&&this.map.isDefine||j.onError!==aa)try{e=i.execCb(c,m,b,e)}catch(d){a=d}else e=i.execCb(c,m,b,e);this.map.isDefine&&((b=this.module)&&void 0!==b.exports&&b.exports!== +this.exports?e=b.exports:void 0===e&&this.usingExports&&(e=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",v(this.error=a)}else e=m;this.exports=e;if(this.map.isDefine&&!this.ignore&&(r[c]=e,j.onResourceLoad))j.onResourceLoad(i,this.map,this.depMaps);x(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete= +!0)}}else this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,d=n(a.prefix);this.depMaps.push(d);t(d,"defined",u(this,function(e){var m,d;d=this.map.name;var g=this.map.parentMap?this.map.parentMap.name:null,h=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(e.normalize&&(d=e.normalize(d,function(a){return c(a,g,!0)})||""),e=n(a.prefix+"!"+d,this.map.parentMap),t(e,"defined",u(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})), +d=l(p,e.id)){this.depMaps.push(e);if(this.events.error)d.on("error",u(this,function(a){this.emit("error",a)}));d.enable()}}else m=u(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),m.error=u(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];F(p,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&x(a.map.id)});v(a)}),m.fromText=u(this,function(e,c){var d=a.name,g=n(d),B=O;c&&(e=c);B&&(O=!1);q(g);s(k.config,b)&&(k.config[d]=k.config[b]);try{j.exec(e)}catch(ca){return v(A("fromtexteval", +"fromText eval for "+b+" failed: "+ca,ca,[b]))}B&&(O=!0);this.depMaps.push(g);i.completeLoad(d);h([d],m)}),e.load(a.name,h,m,k)}));i.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){T[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,u(this,function(a,b){var c,e;if("string"===typeof a){a=n(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=l(N,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;t(a,"defined",u(this,function(a){this.defineDep(b, +a);this.check()}));this.errback&&t(a,"error",u(this,this.errback))}c=a.id;e=p[c];!s(N,c)&&(e&&!e.enabled)&&i.enable(a,this)}));F(this.pluginMaps,u(this,function(a){var b=l(p,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:k,contextName:b,registry:p,defined:r,urlFetched:S,defQueue:G,Module:X,makeModuleMap:n, +nextTick:j.nextTick,onError:v,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=k.pkgs,c=k.shim,e={paths:!0,config:!0,map:!0};F(a,function(a,b){e[b]?"map"===b?(k.map||(k.map={}),Q(k[b],a,!0,!0)):Q(k[b],a,!0):k[b]=a});a.shim&&(F(a.shim,function(a,b){I(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a);c[b]=a}),k.shim=c);a.packages&&(y(a.packages,function(a){a="string"===typeof a?{name:a}:a;b[a.name]={name:a.name, +location:a.location||a.name,main:(a.main||"main").replace(ja,"").replace(ea,"")}}),k.pkgs=b);F(p,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=n(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(Z,arguments));return b||a.exports&&ba(a.exports)}},makeRequire:function(a,f){function d(e,c,h){var g,k;f.enableBuildCallback&&(c&&H(c))&&(c.__requireJsBuild=!0);if("string"===typeof e){if(H(c))return v(A("requireargs", +"Invalid require call"),h);if(a&&s(N,e))return N[e](p[a.id]);if(j.get)return j.get(i,e,a,d);g=n(e,a,!1,!0);g=g.id;return!s(r,g)?v(A("notloaded",'Module name "'+g+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):r[g]}K();i.nextTick(function(){K();k=q(n(null,a));k.skipMap=f.skipMap;k.init(e,c,h,{enabled:!0});C()});return d}f=f||{};Q(d,{isBrowser:z,toUrl:function(b){var d,f=b.lastIndexOf("."),g=b.split("/")[0];if(-1!==f&&(!("."===g||".."===g)||1h.attachEvent.toString().indexOf("[native code"))&&!W?(O=!0,h.attachEvent("onreadystatechange",b.onScriptLoad)):(h.addEventListener("load",b.onScriptLoad,!1),h.addEventListener("error", +b.onScriptError,!1)),h.src=d,K=h,C?x.insertBefore(h,C):x.appendChild(h),K=null,h;if(da)try{importScripts(d),b.completeLoad(c)}catch(l){b.onError(A("importscripts","importScripts failed for "+c+" at "+d,l,[c]))}};z&&M(document.getElementsByTagName("script"),function(b){x||(x=b.parentNode);if(J=b.getAttribute("data-main"))return q=J,t.baseUrl||(D=q.split("/"),q=D.pop(),fa=D.length?D.join("/")+"/":"./",t.baseUrl=fa),q=q.replace(ea,""),j.jsExtRegExp.test(q)&&(q=J),t.deps=t.deps?t.deps.concat(q):[q],!0}); +define=function(b,c,d){var h,j;"string"!==typeof b&&(d=c,c=b,b=null);I(c)||(d=c,c=null);!c&&H(d)&&(c=[],d.length&&(d.toString().replace(la,"").replace(ma,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));if(O){if(!(h=K))P&&"interactive"===P.readyState||M(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return P=b}),h=P;h&&(b||(b=h.getAttribute("data-requiremodule")),j=E[h.getAttribute("data-requirecontext")])}(j?j.defQueue: +R).push([b,c,d])};define.amd={jQuery:!0};j.exec=function(b){return eval(b)};j(t)}})(this); diff --git a/v3/js/togetherjs/togetherjs/libs/tinycolor.js b/v3/js/togetherjs/togetherjs/libs/tinycolor.js new file mode 100644 index 000000000..c1f5991be --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/tinycolor.js @@ -0,0 +1,869 @@ +// TinyColor v0.9.13 +// https://github.com/bgrins/TinyColor +// 2012-11-28, Brian Grinstead, MIT License + +(function(root) { + +var trimLeft = /^[\s,#]+/, + trimRight = /\s+$/, + tinyCounter = 0, + math = Math, + mathRound = math.round, + mathMin = math.min, + mathMax = math.max, + mathRandom = math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + + // If input is already a tinycolor, return itself + if (typeof color == "object" && color.hasOwnProperty("_tc_id")) { + return color; + } + + var rgb = inputToRGB(color); + var r = rgb.r, + g = rgb.g, + b = rgb.b, + a = rgb.a, + roundA = mathRound(100*a) / 100, + format = rgb.format; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (r < 1) { r = mathRound(r); } + if (g < 1) { g = mathRound(g); } + if (b < 1) { b = mathRound(b); } + + return { + ok: rgb.ok, + format: format, + _tc_id: tinyCounter++, + alpha: a, + toHsv: function() { + var hsv = rgbToHsv(r, g, b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(r, g, b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(r, g, b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a }; + }, + toHslString: function() { + var hsl = rgbToHsl(r, g, b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ roundA + ")"; + }, + toHex: function() { + return rgbToHex(r, g, b); + }, + toHexString: function() { + return '#' + rgbToHex(r, g, b); + }, + toRgb: function() { + return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a }; + }, + toRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" : + "rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(r, 255) * 100) + "%", g: mathRound(bound01(g, 255) * 100) + "%", b: mathRound(bound01(b, 255) * 100) + "%", a: a }; + }, + toPercentageRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%, " + roundA + ")"; + }, + toName: function() { + return hexNames[rgbToHex(r, g, b)] || false; + }, + toFilter: function() { + var hex = rgbToHex(r, g, b); + var secondHex = hex; + var alphaHex = Math.round(parseFloat(a) * 255).toString(16); + var secondAlphaHex = alphaHex; + var gradientType = opts && opts.gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex = s.toHex(); + secondAlphaHex = Math.round(parseFloat(s.alpha) * 255).toString(16); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr=#" + pad2(alphaHex) + hex + ",endColorstr=#" + pad2(secondAlphaHex) + secondHex + ")"; + }, + toString: function(format) { + format = format || this.format; + var formattedString = false; + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex") { + formattedString = this.toHexString(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + } + }; +} + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + newColor[i] = convertToPercentage(color[i]); + } + color = newColor; + } + + return tinycolor(color); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 255, g: 255, b: 255 }; + var a = 1; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { + color.s = convertToPercentage(color.s); + color.v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, color.s, color.v); + ok = true; + format = "hsv"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { + color.s = convertToPercentage(color.s); + color.l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, color.s, color.l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = parseFloat(a); + + // Handle invalid alpha characters by setting to 1 + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b) { + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + + +tinycolor.desaturate = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.s -= ((amount || 10) / 100); + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +}; +tinycolor.saturate = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.s += ((amount || 10) / 100); + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +}; +tinycolor.greyscale = function(color) { + return tinycolor.desaturate(color, 100); +}; +tinycolor.lighten = function(color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.l += ((amount || 10) / 100); + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +}; +tinycolor.darken = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.l -= ((amount || 10) / 100); + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +}; +tinycolor.complement = function(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +}; + + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +tinycolor.triad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +}; +tinycolor.tetrad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +}; +tinycolor.splitcomplement = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +}; +tinycolor.analogous = function(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +}; +tinycolor.monochromatic = function(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +}; +// Readability based on W3C recommendations: http://www.w3.org/TR/AERT#color-contrast +// Returns object with two properties: +// .brightness: the difference in brightness between the two colors +// .color: the difference in color/hue between the two colors +// An "acceptable" color is considered to have a brightness difference of 125 and a +// color difference of 500 +tinycolor.readability = function(color1, color2) { + var a = tinycolor(color1).toRgb(), b = tinycolor(color2).toRgb(); + var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000; + var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000; + var colorDiff = ( + Math.max(a.r, b.r) - Math.min(a.r, b.r) + + Math.max(a.g, b.g) - Math.min(a.g, b.g) + + Math.max(a.b, b.b) - Math.min(a.b, b.b)); + return { + brightness: Math.abs(brightnessA - brightnessB), + color: colorDiff + }; +}; +// True if using color1 over color2 (or vice versa) is "readable" +// Based on: http://www.w3.org/TR/AERT#color-contrast +// Example: +// tinycolor.readable("#000", "#111") => false +tinycolor.readable = function(color1, color2) { + var readability = tinycolor.readability(color1, color2); + return readability.brightness > 125 && readability.color > 500; +}; +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Example: +// tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" +tinycolor.mostReadable = function(baseColor, colorList) { + var bestColor; + var bestScore = 0; + var bestIsReadable = false; + for (var i=0; i < colorList.length; i++) { + var readability = tinycolor.readability(baseColor, colorList[i]); + var readable = readability.brightness > 125 && readability.color > 500; + // We normalize both around the "acceptable" breaking point, + // but rank brightness constrast higher than hue. Why? I'm + // not sure, seems reasonable. + var score = 3 * (readability.brightness / 125) + (readability.color / 500); + if ((readable && ! bestIsReadable) || + (readable && bestIsReadable && score > bestScore) || + ((! readable) && (! bestIsReadable) && score > bestScore)) { + bestIsReadable = readable; + bestScore = score; + bestColor = colorList[i]; + } + } + return bestColor; +}; + + +// Big List of Colors +// --------- +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse an integer into hex +function parseHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0 }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseHex(match[1]), + g: parseHex(match[2]), + b: parseHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseHex(match[1] + '' + match[1]), + g: parseHex(match[2] + '' + match[2]), + b: parseHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define !== "undefined") { + define(function () {return tinycolor;}); +} +// Browser: Expose to window +else { + root.tinycolor = tinycolor; +} + +})(this); diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/index.html b/v3/js/togetherjs/togetherjs/libs/walkabout/index.html new file mode 100644 index 000000000..03a50844c --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/index.html @@ -0,0 +1,52 @@ + + + + walkabout.js: automated randomized Javascript frontend testing + + + + + + +
      + +

      Walkabout.js

      + +

      walkabout.js is a library to do automated randomized Javascript + testing (you might consider it "fuzz" testing). It figures out + what the application is listening for the user to do, and does + things randomly.

      + +

      For more information + see the github + page.

      + +

      There is a bookmarklet for use with jQuery apps:

      + +

      + walkabout +

      + +
      + + + diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/lib/esprima.js b/v3/js/togetherjs/togetherjs/libs/walkabout/lib/esprima.js new file mode 100644 index 000000000..90d1b14bb --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/lib/esprima.js @@ -0,0 +1,3808 @@ +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwError: true, createLiteral: true, generateStatement: true, +parseAssignmentExpression: true, parseBlock: true, parseExpression: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseLeftHandSideExpression: true, +parseStatement: true, parseSourceElement: true */ + +(function (factory) { + 'use strict'; + + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // and plain browser loading, + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((window.esprima = {})); + } +}(function (exports) { + 'use strict'; + + var Token, + TokenName, + Syntax, + PropertyKind, + Messages, + Regex, + source, + strict, + index, + lineNumber, + lineStart, + length, + buffer, + state, + extra; + + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8 + }; + + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + + Syntax = { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + }; + + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; + + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalReturn: 'Illegal return statement', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode' + }; + + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), + NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') + }; + + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + + function assert(condition, message) { + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + + function sliceSource(from, to) { + return source.slice(from, to); + } + + if (typeof 'esprima'[0] === 'undefined') { + sliceSource = function sliceArraySource(from, to) { + return source.slice(from, to).join(''); + }; + } + + function isDecimalDigit(ch) { + return '0123456789'.indexOf(ch) >= 0; + } + + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } + + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } + + + // 7.2 White Space + + function isWhiteSpace(ch) { + return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || + (ch === '\u000C') || (ch === '\u00A0') || + (ch.charCodeAt(0) >= 0x1680 && + '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'); + } + + // 7.6 Identifier Names and Identifiers + + function isIdentifierStart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); + } + + function isIdentifierPart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch >= '0') && (ch <= '9')) || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); + } + + // 7.6.1.2 Future Reserved Words + + function isFutureReservedWord(id) { + switch (id) { + + // Future reserved words. + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + } + + return false; + } + + function isStrictModeReservedWord(id) { + switch (id) { + + // Strict Mode reserved words. + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + } + + return false; + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + // 7.6.1.1 Keywords + + function isKeyword(id) { + var keyword = false; + switch (id.length) { + case 2: + keyword = (id === 'if') || (id === 'in') || (id === 'do'); + break; + case 3: + keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + break; + case 4: + keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with'); + break; + case 5: + keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw'); + break; + case 6: + keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch'); + break; + case 7: + keyword = (id === 'default') || (id === 'finally'); + break; + case 8: + keyword = (id === 'function') || (id === 'continue') || (id === 'debugger'); + break; + case 10: + keyword = (id === 'instanceof'); + break; + } + + if (keyword) { + return true; + } + + switch (id) { + // Future reserved words. + // 'const' is specialized as Keyword in V8. + case 'const': + return true; + + // For compatiblity to SpiderMonkey and ES.next + case 'yield': + case 'let': + return true; + } + + if (strict && isStrictModeReservedWord(id)) { + return true; + } + + return isFutureReservedWord(id); + } + + // Return the next character and move forward. + + function nextChar() { + return source[index++]; + } + + // 7.4 Comments + + function skipComment() { + var ch, blockComment, lineComment; + + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source[index]; + + if (lineComment) { + ch = nextChar(); + if (isLineTerminator(ch)) { + lineComment = false; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } + } else if (blockComment) { + if (isLineTerminator(ch)) { + if (ch === '\r' && source[index + 1] === '\n') { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = nextChar(); + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + if (ch === '*') { + ch = source[index]; + if (ch === '/') { + ++index; + blockComment = false; + } + } + } + } else if (ch === '/') { + ch = source[index + 1]; + if (ch === '/') { + index += 2; + lineComment = true; + } else if (ch === '*') { + index += 2; + blockComment = true; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = nextChar(); + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanIdentifier() { + var ch, start, id, restore; + + ch = source[index]; + if (!isIdentifierStart(ch)) { + return; + } + + start = index; + if (ch === '\\') { + ++index; + if (source[index] !== 'u') { + return; + } + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + if (ch === '\\' || !isIdentifierStart(ch)) { + return; + } + id = ch; + } else { + index = restore; + id = 'u'; + } + } else { + id = nextChar(); + } + + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch)) { + break; + } + if (ch === '\\') { + ++index; + if (source[index] !== 'u') { + return; + } + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + if (ch === '\\' || !isIdentifierPart(ch)) { + return; + } + id += ch; + } else { + index = restore; + id += 'u'; + } + } else { + id += nextChar(); + } + } + + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + return { + type: Token.Identifier, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (isKeyword(id)) { + return { + type: Token.Keyword, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.1 Null Literals + + if (id === 'null') { + return { + type: Token.NullLiteral, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.2 Boolean Literals + + if (id === 'true' || id === 'false') { + return { + type: Token.BooleanLiteral, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + return { + type: Token.Identifier, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.7 Punctuators + + function scanPunctuator() { + var start = index, + ch1 = source[index], + ch2, + ch3, + ch4; + + // Check for most common single-character punctuators. + + if (ch1 === ';' || ch1 === '{' || ch1 === '}') { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === ',' || ch1 === '(' || ch1 === ')') { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // Dot (.) can also start a floating-point number, hence the need + // to check the next character. + + ch2 = source[index + 1]; + if (ch1 === '.' && !isDecimalDigit(ch2)) { + return { + type: Token.Punctuator, + value: nextChar(), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // Peek more characters. + + ch3 = source[index + 2]; + ch4 = source[index + 3]; + + // 4-character punctuator: >>>= + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + if (ch4 === '=') { + index += 4; + return { + type: Token.Punctuator, + value: '>>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // 3-character punctuators: === !== >>> <<= >>= + + if (ch1 === '=' && ch2 === '=' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '===', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '!' && ch2 === '=' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '!==', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + index += 3; + return { + type: Token.Punctuator, + value: '>>>', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '<' && ch2 === '<' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '<<=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '>' && ch2 === '>' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 2-character punctuators: <= >= == != ++ -- << >> && || + // += -= *= %= &= |= ^= /= + + if (ch2 === '=') { + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + index += 2; + return { + type: Token.Punctuator, + value: ch1 + ch2, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { + if ('+-<>&|'.indexOf(ch2) >= 0) { + index += 2; + return { + type: Token.Punctuator, + value: ch1 + ch2, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // The remaining 1-character punctuators. + + if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) { + return { + type: Token.Punctuator, + value: nextChar(), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // 7.8.3 Numeric Literals + + function scanNumericLiteral() { + var number, start, ch; + + ch = source[index]; + assert(isDecimalDigit(ch) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); + + start = index; + number = ''; + if (ch !== '.') { + number = nextChar(); + ch = source[index]; + + // Hex number starts with '0x'. + // Octal number starts with '0'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + number += nextChar(); + while (index < length) { + ch = source[index]; + if (!isHexDigit(ch)) { + break; + } + number += nextChar(); + } + + if (number.length <= 2) { + // only 0x + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } else if (isOctalDigit(ch)) { + number += nextChar(); + while (index < length) { + ch = source[index]; + if (!isOctalDigit(ch)) { + break; + } + number += nextChar(); + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch) || isDecimalDigit(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: true, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // decimal number starts with '0' such as '09' is illegal. + if (isDecimalDigit(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += nextChar(); + } + } + + if (ch === '.') { + number += nextChar(); + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += nextChar(); + } + } + + if (ch === 'e' || ch === 'E') { + number += nextChar(); + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += nextChar(); + } + + ch = source[index]; + if (isDecimalDigit(ch)) { + number += nextChar(); + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += nextChar(); + } + } else { + ch = 'character ' + ch; + if (index >= length) { + ch = ''; + } + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.4 String Literals + + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false; + + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); + + start = index; + ++index; + + while (index < length) { + ch = nextChar(); + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = nextChar(); + if (!isLineTerminator(ch)) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\v'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(nextChar()); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(nextChar()); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + } + } else if (isLineTerminator(ch)) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.StringLiteral, + value: str, + octal: octal, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanRegExp() { + var str = '', ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; + + buffer = null; + skipComment(); + + start = index; + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = nextChar(); + + while (index < length) { + ch = nextChar(); + str += ch; + if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '\\') { + ch = nextChar(); + // ECMA-262 7.8.5 + if (isLineTerminator(ch)) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } else if (isLineTerminator(ch)) { + throwError({}, Messages.UnterminatedRegExp); + } + } + } + + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); + } + + // Exclude leading and trailing slash. + pattern = str.substr(1, str.length - 2); + + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch)) { + break; + } + + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + str += '\\u'; + for (; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + } else { + str += '\\'; + } + } else { + flags += ch; + str += ch; + } + } + + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); + } + + return { + literal: str, + value: value, + range: [start, index] + }; + } + + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } + + function advance() { + var ch, token; + + skipComment(); + + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + range: [index, index] + }; + } + + token = scanPunctuator(); + if (typeof token !== 'undefined') { + return token; + } + + ch = source[index]; + + if (ch === '\'' || ch === '"') { + return scanStringLiteral(); + } + + if (ch === '.' || isDecimalDigit(ch)) { + return scanNumericLiteral(); + } + + token = scanIdentifier(); + if (typeof token !== 'undefined') { + return token; + } + + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + function lex() { + var token; + + if (buffer) { + index = buffer.range[1]; + lineNumber = buffer.lineNumber; + lineStart = buffer.lineStart; + token = buffer; + buffer = null; + return token; + } + + buffer = null; + return advance(); + } + + function lookahead() { + var pos, line, start; + + if (buffer !== null) { + return buffer; + } + + pos = index; + line = lineNumber; + start = lineStart; + buffer = advance(); + index = pos; + lineNumber = line; + lineStart = start; + + return buffer; + } + + // Return true if there is a line terminator before the next token. + + function peekLineTerminator() { + var pos, line, start, found; + + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; + + return found; + } + + // Throw an exception + + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + return args[index] || ''; + } + ); + + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.range[0]; + error.lineNumber = token.lineNumber; + error.column = token.range[0] - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; + } + + throw error; + } + + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; + } + } + } + + + // Throw an exception because of the token. + + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } + + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); + } + + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); + } + + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); + } + + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; + } + throwError(token, Messages.UnexpectedToken, token.value); + } + + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); + } + + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); + } + } + + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } + } + + // Return true if the next token matches the specified punctuator. + + function match(value) { + var token = lookahead(); + return token.type === Token.Punctuator && token.value === value; + } + + // Return true if the next token matches the specified keyword + + function matchKeyword(keyword) { + var token = lookahead(); + return token.type === Token.Keyword && token.value === keyword; + } + + // Return true if the next token is an assignment operator + + function matchAssign() { + var token = lookahead(), + op = token.value; + + if (token.type !== Token.Punctuator) { + return false; + } + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } + + function consumeSemicolon() { + var token, line; + + // Catch the very common case first. + if (source[index] === ';') { + lex(); + return; + } + + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; + } + + if (match(';')) { + lex(); + return; + } + + token = lookahead(); + if (token.type !== Token.EOF && !match('}')) { + throwUnexpected(token); + } + return; + } + + // Return true if provided expression is LeftHandSideExpression + + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; + } + + // 11.1.4 Array Initialiser + + function parseArrayInitialiser() { + var elements = []; + + expect('['); + + while (!match(']')) { + if (match(',')) { + lex(); + elements.push(null); + } else { + elements.push(parseAssignmentExpression()); + + if (!match(']')) { + expect(','); + } + } + } + + expect(']'); + + return { + type: Syntax.ArrayExpression, + elements: elements + }; + } + + // 11.1.5 Object Initialiser + + function parsePropertyFunction(param, first) { + var previousStrict, body; + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (first && strict && isRestrictedWord(param[0].name)) { + throwErrorTolerant(first, Messages.StrictParamName); + } + strict = previousStrict; + + return { + type: Syntax.FunctionExpression, + id: null, + params: param, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + function parseObjectPropertyKey() { + var token = lex(); + + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. + + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return createLiteral(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseObjectProperty() { + var token, key, id, param; + + token = lookahead(); + + if (token.type === Token.Identifier) { + + id = parseObjectPropertyKey(); + + // Property Assignment: Getter and Setter. + + if (token.value === 'get' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + expect(')'); + return { + type: Syntax.Property, + key: key, + value: parsePropertyFunction([]), + kind: 'get' + }; + } else if (token.value === 'set' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + token = lookahead(); + if (token.type !== Token.Identifier) { + throwUnexpected(lex()); + } + param = [ parseVariableIdentifier() ]; + expect(')'); + return { + type: Syntax.Property, + key: key, + value: parsePropertyFunction(param, token), + kind: 'set' + }; + } else { + expect(':'); + return { + type: Syntax.Property, + key: id, + value: parseAssignmentExpression(), + kind: 'init' + }; + } + } else if (token.type === Token.EOF || token.type === Token.Punctuator) { + throwUnexpected(token); + } else { + key = parseObjectPropertyKey(); + expect(':'); + return { + type: Syntax.Property, + key: key, + value: parseAssignmentExpression(), + kind: 'init' + }; + } + } + + function parseObjectInitialiser() { + var properties = [], property, name, kind, map = {}, toString = String; + + expect('{'); + + while (!match('}')) { + property = parseObjectProperty(); + + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; + if (Object.prototype.hasOwnProperty.call(map, name)) { + if (map[name] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[name] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[name] |= kind; + } else { + map[name] = kind; + } + + properties.push(property); + + if (!match('}')) { + expect(','); + } + } + + expect('}'); + + return { + type: Syntax.ObjectExpression, + properties: properties + }; + } + + // 11.1 Primary Expressions + + function parsePrimaryExpression() { + var expr, + token = lookahead(), + type = token.type; + + if (type === Token.Identifier) { + return { + type: Syntax.Identifier, + name: lex().value + }; + } + + if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return createLiteral(lex()); + } + + if (type === Token.Keyword) { + if (matchKeyword('this')) { + lex(); + return { + type: Syntax.ThisExpression + }; + } + + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + } + + if (type === Token.BooleanLiteral) { + lex(); + token.value = (token.value === 'true'); + return createLiteral(token); + } + + if (type === Token.NullLiteral) { + lex(); + token.value = null; + return createLiteral(token); + } + + if (match('[')) { + return parseArrayInitialiser(); + } + + if (match('{')) { + return parseObjectInitialiser(); + } + + if (match('(')) { + lex(); + state.lastParenthesized = expr = parseExpression(); + expect(')'); + return expr; + } + + if (match('/') || match('/=')) { + return createLiteral(scanRegExp()); + } + + return throwUnexpected(lex()); + } + + // 11.2 Left-Hand-Side Expressions + + function parseArguments() { + var args = []; + + expect('('); + + if (!match(')')) { + while (index < length) { + args.push(parseAssignmentExpression()); + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + return args; + } + + function parseNonComputedProperty() { + var token = lex(); + + if (!isIdentifierName(token)) { + throwUnexpected(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseNonComputedMember() { + expect('.'); + + return parseNonComputedProperty(); + } + + function parseComputedMember() { + var expr; + + expect('['); + + expr = parseExpression(); + + expect(']'); + + return expr; + } + + function parseNewExpression() { + var expr; + + expectKeyword('new'); + + expr = { + type: Syntax.NewExpression, + callee: parseLeftHandSideExpression(), + 'arguments': [] + }; + + if (match('(')) { + expr['arguments'] = parseArguments(); + } + + return expr; + } + + function parseLeftHandSideExpressionAllowCall() { + var expr; + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || match('(')) { + if (match('(')) { + expr = { + type: Syntax.CallExpression, + callee: expr, + 'arguments': parseArguments() + }; + } else if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + } + } + + return expr; + } + + + function parseLeftHandSideExpression() { + var expr; + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[')) { + if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + } + } + + return expr; + } + + // 11.3 Postfix Expressions + + function parsePostfixExpression() { + var expr = parseLeftHandSideExpressionAllowCall(); + + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + expr = { + type: Syntax.UpdateExpression, + operator: lex().value, + argument: expr, + prefix: false + }; + } + + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var token, expr; + + if (match('++') || match('--')) { + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + expr = { + type: Syntax.UpdateExpression, + operator: token.value, + argument: expr, + prefix: true + }; + return expr; + } + + if (match('+') || match('-') || match('~') || match('!')) { + expr = { + type: Syntax.UnaryExpression, + operator: lex().value, + argument: parseUnaryExpression() + }; + return expr; + } + + if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + expr = { + type: Syntax.UnaryExpression, + operator: lex().value, + argument: parseUnaryExpression() + }; + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + return expr; + } + + return parsePostfixExpression(); + } + + // 11.5 Multiplicative Operators + + function parseMultiplicativeExpression() { + var expr = parseUnaryExpression(); + + while (match('*') || match('/') || match('%')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseUnaryExpression() + }; + } + + return expr; + } + + // 11.6 Additive Operators + + function parseAdditiveExpression() { + var expr = parseMultiplicativeExpression(); + + while (match('+') || match('-')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseMultiplicativeExpression() + }; + } + + return expr; + } + + // 11.7 Bitwise Shift Operators + + function parseShiftExpression() { + var expr = parseAdditiveExpression(); + + while (match('<<') || match('>>') || match('>>>')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseAdditiveExpression() + }; + } + + return expr; + } + // 11.8 Relational Operators + + function parseRelationalExpression() { + var expr, previousAllowIn; + + previousAllowIn = state.allowIn; + state.allowIn = true; + + expr = parseShiftExpression(); + + while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseShiftExpression() + }; + } + + state.allowIn = previousAllowIn; + return expr; + } + + // 11.9 Equality Operators + + function parseEqualityExpression() { + var expr = parseRelationalExpression(); + + while (match('==') || match('!=') || match('===') || match('!==')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseRelationalExpression() + }; + } + + return expr; + } + + // 11.10 Binary Bitwise Operators + + function parseBitwiseANDExpression() { + var expr = parseEqualityExpression(); + + while (match('&')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '&', + left: expr, + right: parseEqualityExpression() + }; + } + + return expr; + } + + function parseBitwiseXORExpression() { + var expr = parseBitwiseANDExpression(); + + while (match('^')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '^', + left: expr, + right: parseBitwiseANDExpression() + }; + } + + return expr; + } + + function parseBitwiseORExpression() { + var expr = parseBitwiseXORExpression(); + + while (match('|')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '|', + left: expr, + right: parseBitwiseXORExpression() + }; + } + + return expr; + } + + // 11.11 Binary Logical Operators + + function parseLogicalANDExpression() { + var expr = parseBitwiseORExpression(); + + while (match('&&')) { + lex(); + expr = { + type: Syntax.LogicalExpression, + operator: '&&', + left: expr, + right: parseBitwiseORExpression() + }; + } + + return expr; + } + + function parseLogicalORExpression() { + var expr = parseLogicalANDExpression(); + + while (match('||')) { + lex(); + expr = { + type: Syntax.LogicalExpression, + operator: '||', + left: expr, + right: parseLogicalANDExpression() + }; + } + + return expr; + } + + // 11.12 Conditional Operator + + function parseConditionalExpression() { + var expr, previousAllowIn, consequent; + + expr = parseLogicalORExpression(); + + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + + expr = { + type: Syntax.ConditionalExpression, + test: expr, + consequent: consequent, + alternate: parseAssignmentExpression() + }; + } + + return expr; + } + + // 11.13 Assignment Operators + + function parseAssignmentExpression() { + var token, expr; + + token = lookahead(); + expr = parseConditionalExpression(); + + if (matchAssign()) { + // LeftHandSideExpression + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + // 11.13.1 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); + } + + expr = { + type: Syntax.AssignmentExpression, + operator: lex().value, + left: expr, + right: parseAssignmentExpression() + }; + } + + return expr; + } + + // 11.14 Comma Operator + + function parseExpression() { + var expr = parseAssignmentExpression(); + + if (match(',')) { + expr = { + type: Syntax.SequenceExpression, + expressions: [ expr ] + }; + + while (index < length) { + if (!match(',')) { + break; + } + lex(); + expr.expressions.push(parseAssignmentExpression()); + } + + } + return expr; + } + + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; + } + statement = parseSourceElement(); + if (typeof statement === 'undefined') { + break; + } + list.push(statement); + } + + return list; + } + + function parseBlock() { + var block; + + expect('{'); + + block = parseStatementList(); + + expect('}'); + + return { + type: Syntax.BlockStatement, + body: block + }; + } + + // 12.2 Variable Statement + + function parseVariableIdentifier() { + var token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseVariableDeclaration(kind) { + var id = parseVariableIdentifier(), + init = null; + + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } + + if (kind === 'const') { + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } + + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + } + + function parseVariableDeclarationList(kind) { + var list = []; + + while (index < length) { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; + } + lex(); + } + + return list; + } + + function parseVariableStatement() { + var declarations; + + expectKeyword('var'); + + declarations = parseVariableDeclarationList(); + + consumeSemicolon(); + + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: 'var' + }; + } + + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations; + + expectKeyword(kind); + + declarations = parseVariableDeclarationList(kind); + + consumeSemicolon(); + + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + } + + // 12.3 Empty Statement + + function parseEmptyStatement() { + expect(';'); + + return { + type: Syntax.EmptyStatement + }; + } + + // 12.4 Expression Statement + + function parseExpressionStatement() { + var expr = parseExpression(); + + consumeSemicolon(); + + return { + type: Syntax.ExpressionStatement, + expression: expr + }; + } + + // 12.5 If statement + + function parseIfStatement() { + var test, consequent, alternate; + + expectKeyword('if'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); + } else { + alternate = null; + } + + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + } + + // 12.6 Iteration Statements + + function parseDoWhileStatement() { + var body, test, oldInIteration; + + expectKeyword('do'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + if (match(';')) { + lex(); + } + + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + } + + function parseWhileStatement() { + var test, body, oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + } + + function parseForVariableDeclaration() { + var token = lex(); + + return { + type: Syntax.VariableDeclaration, + declarations: parseVariableDeclarationList(), + kind: token.value + }; + } + + function parseForStatement() { + var init, test, update, left, right, body, oldInIteration; + + init = test = update = null; + + expectKeyword('for'); + + expect('('); + + if (match(';')) { + lex(); + } else { + if (matchKeyword('var') || matchKeyword('let')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1 && matchKeyword('in')) { + lex(); + left = init; + right = parseExpression(); + init = null; + } + } else { + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isLeftHandSide(init)) { + throwError({}, Messages.InvalidLHSInForIn); + } + + lex(); + left = init; + right = parseExpression(); + init = null; + } + } + + if (typeof left === 'undefined') { + expect(';'); + } + } + + if (typeof left === 'undefined') { + + if (!match(';')) { + test = parseExpression(); + } + expect(';'); + + if (!match(')')) { + update = parseExpression(); + } + } + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + if (typeof left === 'undefined') { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + } + + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + } + + // 12.7 The continue statement + + function parseContinueStatement() { + var token, label = null; + + expectKeyword('continue'); + + // Optimize the most common form: 'continue;'. + if (source[index] === ';') { + lex(); + + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: null + }; + } + + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: null + }; + } + + token = lookahead(); + if (token.type === Token.Identifier) { + label = parseVariableIdentifier(); + + if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: label + }; + } + + // 12.8 The break statement + + function parseBreakStatement() { + var token, label = null; + + expectKeyword('break'); + + // Optimize the most common form: 'break;'. + if (source[index] === ';') { + lex(); + + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: null + }; + } + + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: null + }; + } + + token = lookahead(); + if (token.type === Token.Identifier) { + label = parseVariableIdentifier(); + + if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: label + }; + } + + // 12.9 The return statement + + function parseReturnStatement() { + var token, argument = null; + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); + } + + // 'return' followed by a space and an identifier is very common. + if (source[index] === ' ') { + if (isIdentifierStart(source[index + 1])) { + argument = parseExpression(); + consumeSemicolon(); + return { + type: Syntax.ReturnStatement, + argument: argument + }; + } + } + + if (peekLineTerminator()) { + return { + type: Syntax.ReturnStatement, + argument: null + }; + } + + if (!match(';')) { + token = lookahead(); + if (!match('}') && token.type !== Token.EOF) { + argument = parseExpression(); + } + } + + consumeSemicolon(); + + return { + type: Syntax.ReturnStatement, + argument: argument + }; + } + + // 12.10 The with statement + + function parseWithStatement() { + var object, body; + + if (strict) { + throwErrorTolerant({}, Messages.StrictModeWith); + } + + expectKeyword('with'); + + expect('('); + + object = parseExpression(); + + expect(')'); + + body = parseStatement(); + + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + } + + // 12.10 The swith statement + + function parseSwitchCase() { + var test, + consequent = [], + statement; + + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); + + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; + } + statement = parseStatement(); + if (typeof statement === 'undefined') { + break; + } + consequent.push(statement); + } + + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + } + + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound; + + expectKeyword('switch'); + + expect('('); + + discriminant = parseExpression(); + + expect(')'); + + expect('{'); + + if (match('}')) { + lex(); + return { + type: Syntax.SwitchStatement, + discriminant: discriminant + }; + } + + cases = []; + + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; + + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + + state.inSwitch = oldInSwitch; + + expect('}'); + + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + } + + // 12.13 The throw statement + + function parseThrowStatement() { + var argument; + + expectKeyword('throw'); + + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } + + argument = parseExpression(); + + consumeSemicolon(); + + return { + type: Syntax.ThrowStatement, + argument: argument + }; + } + + // 12.14 The try statement + + function parseCatchClause() { + var param; + + expectKeyword('catch'); + + expect('('); + if (!match(')')) { + param = parseExpression(); + // 12.14.1 + if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } + } + expect(')'); + + return { + type: Syntax.CatchClause, + param: param, + body: parseBlock() + }; + } + + function parseTryStatement() { + var block, handlers = [], finalizer = null; + + expectKeyword('try'); + + block = parseBlock(); + + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } + + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } + + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } + + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: [], + handlers: handlers, + finalizer: finalizer + }; + } + + // 12.15 The debugger statement + + function parseDebuggerStatement() { + expectKeyword('debugger'); + + consumeSemicolon(); + + return { + type: Syntax.DebuggerStatement + }; + } + + // 12 Statements + + function parseStatement() { + var token = lookahead(), + expr, + labeledBody; + + if (token.type === Token.EOF) { + throwUnexpected(token); + } + + if (token.type === Token.Punctuator) { + switch (token.value) { + case ';': + return parseEmptyStatement(); + case '{': + return parseBlock(); + case '(': + return parseExpressionStatement(); + default: + break; + } + } + + if (token.type === Token.Keyword) { + switch (token.value) { + case 'break': + return parseBreakStatement(); + case 'continue': + return parseContinueStatement(); + case 'debugger': + return parseDebuggerStatement(); + case 'do': + return parseDoWhileStatement(); + case 'for': + return parseForStatement(); + case 'function': + return parseFunctionDeclaration(); + case 'if': + return parseIfStatement(); + case 'return': + return parseReturnStatement(); + case 'switch': + return parseSwitchStatement(); + case 'throw': + return parseThrowStatement(); + case 'try': + return parseTryStatement(); + case 'var': + return parseVariableStatement(); + case 'while': + return parseWhileStatement(); + case 'with': + return parseWithStatement(); + default: + break; + } + } + + expr = parseExpression(); + + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); + + if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } + + state.labelSet[expr.name] = true; + labeledBody = parseStatement(); + delete state.labelSet[expr.name]; + + return { + type: Syntax.LabeledStatement, + label: expr, + body: labeledBody + }; + } + + consumeSemicolon(); + + return { + type: Syntax.ExpressionStatement, + expression: expr + }; + } + + // 13 Function Definition + + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; + + expect('{'); + + while (index < length) { + token = lookahead(); + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = sliceSource(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; + + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + + expect('}'); + + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; + + return { + type: Syntax.BlockStatement, + body: sourceElements + }; + } + + function parseFunctionDeclaration() { + var id, param, params = [], body, token, stricted, firstRestricted, message, previousStrict, paramSet; + + expectKeyword('function'); + token = lookahead(); + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead(); + param = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[param.name] = true; + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + function parseFunctionExpression() { + var token, id = null, stricted, firstRestricted, message, param, params = [], body, previousStrict, paramSet; + + expectKeyword('function'); + + if (!match('(')) { + token = lookahead(); + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + } + + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead(); + param = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[param.name] = true; + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + // 14 Program + + function parseSourceElement() { + var token = lookahead(); + + if (token.type === Token.Keyword) { + switch (token.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(token.value); + case 'function': + return parseFunctionDeclaration(); + default: + return parseStatement(); + } + } + + if (token.type !== Token.EOF) { + return parseStatement(); + } + } + + function parseSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; + + while (index < length) { + token = lookahead(); + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = sliceSource(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + while (index < length) { + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; + } + + function parseProgram() { + var program; + strict = false; + program = { + type: Syntax.Program, + body: parseSourceElements() + }; + return program; + } + + // The following functions are needed only when the option to preserve + // the comments is active. + + function addComment(type, value, start, end, loc) { + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (extra.comments.length > 0) { + if (extra.comments[extra.comments.length - 1].range[1] > start) { + return; + } + } + + extra.comments.push({ + type: type, + value: value, + range: [start, end], + loc: loc + }); + } + + function scanComment() { + var comment, ch, loc, start, blockComment, lineComment; + + comment = ''; + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source[index]; + + if (lineComment) { + ch = nextChar(); + if (isLineTerminator(ch)) { + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + lineComment = false; + addComment('Line', comment, start, index - 1, loc); + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + comment = ''; + } else if (index >= length) { + lineComment = false; + comment += ch; + loc.end = { + line: lineNumber, + column: length - lineStart + }; + addComment('Line', comment, start, length, loc); + } else { + comment += ch; + } + } else if (blockComment) { + if (isLineTerminator(ch)) { + if (ch === '\r' && source[index + 1] === '\n') { + ++index; + comment += '\r\n'; + } else { + comment += ch; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = nextChar(); + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + comment += ch; + if (ch === '*') { + ch = source[index]; + if (ch === '/') { + comment = comment.substr(0, comment.length - 1); + blockComment = false; + ++index; + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + comment = ''; + } + } + } + } else if (ch === '/') { + ch = source[index + 1]; + if (ch === '/') { + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + start = index; + index += 2; + lineComment = true; + if (index >= length) { + loc.end = { + line: lineNumber, + column: index - lineStart + }; + lineComment = false; + addComment('Line', comment, start, index, loc); + } + } else if (ch === '*') { + start = index; + index += 2; + blockComment = true; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function filterCommentLocation() { + var i, entry, comment, comments = []; + + for (i = 0; i < extra.comments.length; ++i) { + entry = extra.comments[i]; + comment = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + comment.range = entry.range; + } + if (extra.loc) { + comment.loc = entry.loc; + } + comments.push(comment); + } + + extra.comments = comments; + } + + function collectToken() { + var start, loc, token, range, value; + + skipComment(); + start = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + token = extra.advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (token.type !== Token.EOF) { + range = [token.range[0], token.range[1]]; + value = sliceSource(token.range[0], token.range[1]); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: range, + loc: loc + }); + } + + return token; + } + + function collectRegex() { + var pos, loc, regex, token; + + skipComment(); + + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + regex = extra.scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } + } + } + + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); + + return regex; + } + + function filterTokenLocation() { + var i, entry, token, tokens = []; + + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); + } + + extra.tokens = tokens; + } + + function createLiteral(token) { + return { + type: Syntax.Literal, + value: token.value + }; + } + + function createRawLiteral(token) { + return { + type: Syntax.Literal, + value: token.value, + raw: sliceSource(token.range[0], token.range[1]) + }; + } + + function createLocationMarker() { + var marker = {}; + + marker.range = [index, index]; + marker.loc = { + start: { + line: lineNumber, + column: index - lineStart + }, + end: { + line: lineNumber, + column: index - lineStart + } + }; + + marker.end = function () { + this.range[1] = index; + this.loc.end.line = lineNumber; + this.loc.end.column = index - lineStart; + }; + + marker.apply = function (node) { + if (extra.range) { + node.range = [this.range[0], this.range[1]]; + } + if (extra.loc) { + node.loc = { + start: { + line: this.loc.start.line, + column: this.loc.start.column + }, + end: { + line: this.loc.end.line, + column: this.loc.end.column + } + }; + } + }; + + return marker; + } + + function trackLeftHandSideExpression() { + var marker, expr; + + skipComment(); + marker = createLocationMarker(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[')) { + if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + marker.end(); + marker.apply(expr); + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + marker.end(); + marker.apply(expr); + } + } + + return expr; + } + + function trackLeftHandSideExpressionAllowCall() { + var marker, expr; + + skipComment(); + marker = createLocationMarker(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || match('(')) { + if (match('(')) { + expr = { + type: Syntax.CallExpression, + callee: expr, + 'arguments': parseArguments() + }; + marker.end(); + marker.apply(expr); + } else if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + marker.end(); + marker.apply(expr); + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + marker.end(); + marker.apply(expr); + } + } + + return expr; + } + + function wrapTrackingFunction(range, loc) { + + return function (parseFunction) { + + function isBinary(node) { + return node.type === Syntax.LogicalExpression || + node.type === Syntax.BinaryExpression; + } + + function visit(node) { + if (isBinary(node.left)) { + visit(node.left); + } + if (isBinary(node.right)) { + visit(node.right); + } + + if (range && typeof node.range === 'undefined') { + node.range = [node.left.range[0], node.right.range[1]]; + } + if (loc && typeof node.loc === 'undefined') { + node.loc = { + start: node.left.loc.start, + end: node.right.loc.end + }; + } + } + + return function () { + var marker, node; + + skipComment(); + + marker = createLocationMarker(); + node = parseFunction.apply(null, arguments); + marker.end(); + + if (range && typeof node.range === 'undefined') { + marker.apply(node); + } + + if (loc && typeof node.loc === 'undefined') { + marker.apply(node); + } + + if (isBinary(node)) { + visit(node); + } + + return node; + }; + }; + } + + function patch() { + + var wrapTracking; + + if (extra.comments) { + extra.skipComment = skipComment; + skipComment = scanComment; + } + + if (extra.raw) { + extra.createLiteral = createLiteral; + createLiteral = createRawLiteral; + } + + if (extra.range || extra.loc) { + + extra.parseLeftHandSideExpression = parseLeftHandSideExpression; + extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; + parseLeftHandSideExpression = trackLeftHandSideExpression; + parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall; + + wrapTracking = wrapTrackingFunction(extra.range, extra.loc); + + extra.parseAdditiveExpression = parseAdditiveExpression; + extra.parseAssignmentExpression = parseAssignmentExpression; + extra.parseBitwiseANDExpression = parseBitwiseANDExpression; + extra.parseBitwiseORExpression = parseBitwiseORExpression; + extra.parseBitwiseXORExpression = parseBitwiseXORExpression; + extra.parseBlock = parseBlock; + extra.parseFunctionSourceElements = parseFunctionSourceElements; + extra.parseCatchClause = parseCatchClause; + extra.parseComputedMember = parseComputedMember; + extra.parseConditionalExpression = parseConditionalExpression; + extra.parseConstLetDeclaration = parseConstLetDeclaration; + extra.parseEqualityExpression = parseEqualityExpression; + extra.parseExpression = parseExpression; + extra.parseForVariableDeclaration = parseForVariableDeclaration; + extra.parseFunctionDeclaration = parseFunctionDeclaration; + extra.parseFunctionExpression = parseFunctionExpression; + extra.parseLeftHandSideExpression = parseLeftHandSideExpression; + extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; + extra.parseLogicalANDExpression = parseLogicalANDExpression; + extra.parseLogicalORExpression = parseLogicalORExpression; + extra.parseMultiplicativeExpression = parseMultiplicativeExpression; + extra.parseNewExpression = parseNewExpression; + extra.parseNonComputedProperty = parseNonComputedProperty; + extra.parseObjectProperty = parseObjectProperty; + extra.parseObjectPropertyKey = parseObjectPropertyKey; + extra.parsePostfixExpression = parsePostfixExpression; + extra.parsePrimaryExpression = parsePrimaryExpression; + extra.parseProgram = parseProgram; + extra.parsePropertyFunction = parsePropertyFunction; + extra.parseRelationalExpression = parseRelationalExpression; + extra.parseStatement = parseStatement; + extra.parseShiftExpression = parseShiftExpression; + extra.parseSwitchCase = parseSwitchCase; + extra.parseUnaryExpression = parseUnaryExpression; + extra.parseVariableDeclaration = parseVariableDeclaration; + extra.parseVariableIdentifier = parseVariableIdentifier; + + parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression); + parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); + parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression); + parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression); + parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression); + parseBlock = wrapTracking(extra.parseBlock); + parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); + parseCatchClause = wrapTracking(extra.parseCatchClause); + parseComputedMember = wrapTracking(extra.parseComputedMember); + parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); + parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); + parseEqualityExpression = wrapTracking(extra.parseEqualityExpression); + parseExpression = wrapTracking(extra.parseExpression); + parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); + parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); + parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); + parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression); + parseLeftHandSideExpressionAllowCall = wrapTracking(parseLeftHandSideExpressionAllowCall); + parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression); + parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression); + parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression); + parseNewExpression = wrapTracking(extra.parseNewExpression); + parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); + parseObjectProperty = wrapTracking(extra.parseObjectProperty); + parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); + parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); + parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); + parseProgram = wrapTracking(extra.parseProgram); + parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); + parseRelationalExpression = wrapTracking(extra.parseRelationalExpression); + parseStatement = wrapTracking(extra.parseStatement); + parseShiftExpression = wrapTracking(extra.parseShiftExpression); + parseSwitchCase = wrapTracking(extra.parseSwitchCase); + parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); + parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); + parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); + } + + if (typeof extra.tokens !== 'undefined') { + extra.advance = advance; + extra.scanRegExp = scanRegExp; + + advance = collectToken; + scanRegExp = collectRegex; + } + } + + function unpatch() { + if (typeof extra.skipComment === 'function') { + skipComment = extra.skipComment; + } + + if (extra.raw) { + createLiteral = extra.createLiteral; + } + + if (extra.range || extra.loc) { + parseAdditiveExpression = extra.parseAdditiveExpression; + parseAssignmentExpression = extra.parseAssignmentExpression; + parseBitwiseANDExpression = extra.parseBitwiseANDExpression; + parseBitwiseORExpression = extra.parseBitwiseORExpression; + parseBitwiseXORExpression = extra.parseBitwiseXORExpression; + parseBlock = extra.parseBlock; + parseFunctionSourceElements = extra.parseFunctionSourceElements; + parseCatchClause = extra.parseCatchClause; + parseComputedMember = extra.parseComputedMember; + parseConditionalExpression = extra.parseConditionalExpression; + parseConstLetDeclaration = extra.parseConstLetDeclaration; + parseEqualityExpression = extra.parseEqualityExpression; + parseExpression = extra.parseExpression; + parseForVariableDeclaration = extra.parseForVariableDeclaration; + parseFunctionDeclaration = extra.parseFunctionDeclaration; + parseFunctionExpression = extra.parseFunctionExpression; + parseLeftHandSideExpression = extra.parseLeftHandSideExpression; + parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall; + parseLogicalANDExpression = extra.parseLogicalANDExpression; + parseLogicalORExpression = extra.parseLogicalORExpression; + parseMultiplicativeExpression = extra.parseMultiplicativeExpression; + parseNewExpression = extra.parseNewExpression; + parseNonComputedProperty = extra.parseNonComputedProperty; + parseObjectProperty = extra.parseObjectProperty; + parseObjectPropertyKey = extra.parseObjectPropertyKey; + parsePrimaryExpression = extra.parsePrimaryExpression; + parsePostfixExpression = extra.parsePostfixExpression; + parseProgram = extra.parseProgram; + parsePropertyFunction = extra.parsePropertyFunction; + parseRelationalExpression = extra.parseRelationalExpression; + parseStatement = extra.parseStatement; + parseShiftExpression = extra.parseShiftExpression; + parseSwitchCase = extra.parseSwitchCase; + parseUnaryExpression = extra.parseUnaryExpression; + parseVariableDeclaration = extra.parseVariableDeclaration; + parseVariableIdentifier = extra.parseVariableIdentifier; + } + + if (typeof extra.scanRegExp === 'function') { + advance = extra.advance; + scanRegExp = extra.scanRegExp; + } + } + + function stringToArray(str) { + var length = str.length, + result = [], + i; + for (i = 0; i < length; ++i) { + result[i] = str.charAt(i); + } + return result; + } + + function parse(code, options) { + var program, toString; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + buffer = null; + state = { + allowIn: true, + labelSet: {}, + lastParenthesized: null, + inFunctionBody: false, + inIteration: false, + inSwitch: false + }; + + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + extra.raw = (typeof options.raw === 'boolean') && options.raw; + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + } + + if (length > 0) { + if (typeof source[0] === 'undefined') { + // Try first to convert to a string. This is good as fast path + // for old IE which understands string indexing for string + // literals only and not for string object. + if (code instanceof String) { + source = code.valueOf(); + } + + // Force accessing the characters via an array. + if (typeof source[0] === 'undefined') { + source = stringToArray(code); + } + } + } + + patch(); + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + filterCommentLocation(); + program.comments = extra.comments; + } + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; + } + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + unpatch(); + extra = {}; + } + + return program; + } + + // Sync with package.json. + exports.version = '1.0.0-dev'; + + exports.parse = parse; + + // Deep copy. + exports.Syntax = (function () { + var name, types = {}; + + if (typeof Object.create === 'function') { + types = Object.create(null); + } + + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; + } + } + + if (typeof Object.freeze === 'function') { + Object.freeze(types); + } + + return types; + }()); + +})); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/lib/falafel.js b/v3/js/togetherjs/togetherjs/libs/walkabout/lib/falafel.js new file mode 100644 index 000000000..1805fa4d7 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/lib/falafel.js @@ -0,0 +1,100 @@ +var _tmpModule = {exports: {}}; +(function (module) { + +var parse = esprima.parse; +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; +var forEach = function (xs, fn) { + if (xs.forEach) return xs.forEach(fn); + for (var i = 0; i < xs.length; i++) { + fn.call(xs, xs[i], i, xs); + } +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +module.exports = function (src, opts, fn) { + if (typeof opts === 'function') { + fn = opts; + opts = {}; + } + if (typeof src === 'object') { + opts = src; + src = opts.source; + delete opts.source; + } + src = src || opts.source; + opts.range = true; + if (typeof src !== 'string') src = String(src); + + var ast = parse(src, opts); + + var result = { + chunks : src.split(''), + toString : function () { return result.chunks.join('') }, + inspect : function () { return result.toString() } + }; + var index = 0; + + (function walk (node, parent) { + insertHelpers(node, parent, result.chunks); + + forEach(objectKeys(node), function (key) { + if (key === 'parent') return; + + var child = node[key]; + if (isArray(child)) { + forEach(child, function (c) { + if (c && typeof c.type === 'string') { + walk(c, node); + } + }); + } + else if (child && typeof child.type === 'string') { + insertHelpers(child, node, result.chunks); + walk(child, node); + } + }); + fn(node); + })(ast, undefined); + + return result; +}; + +function insertHelpers (node, parent, chunks) { + if (!node.range) return; + + node.parent = parent; + + node.source = function () { + return chunks.slice( + node.range[0], node.range[1] + ).join(''); + }; + + if (node.update && typeof node.update === 'object') { + var prev = node.update; + forEach(objectKeys(prev), function (key) { + update[key] = prev[key]; + }); + node.update = update; + } + else { + node.update = update; + } + + function update (s) { + chunks[node.range[0]] = s; + for (var i = node.range[0] + 1; i < node.range[1]; i++) { + chunks[i] = ''; + } + }; +} + +})(_tmpModule); +var falafel = _tmpModule.exports; diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/node-proxy.js b/v3/js/togetherjs/togetherjs/libs/walkabout/node-proxy.js new file mode 100644 index 000000000..00048009d --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/node-proxy.js @@ -0,0 +1,219 @@ +const dns = require("dns"); +const http = require("http"); +const fs = require("fs"); +const walkabout = require("./walkabout.js"); +const parseUrl = require("url").parse; + +var IPs = { + localhost: ["127.0.0.1"] +}; + +var PortAliases = {}; + +function loadEtcHosts(callback) { + fs.readFile("/etc/hosts", "UTF-8", function (error, text) { + if (error) { + console.log("Error reading /etc/hosts:", error); + return; + } + var lines = text.split(/\n/g); + lines.forEach(function (l) { + l = l.replace(/^\s*/, ""); + if (! l) { + // empty line + return; + } + if (l.search(/^\#/) != -1) { + // comment + return; + } + var parts = l.split(/\s+/g); + if (parts[0] == "255.255.255.255" || parts[0].indexOf(":") != -1 || + parts[0] == "127.0.0.1") { + return; + } + for (var i=1; i_Walkabout_start_UI = true;_Walkabout_sitewide = true;' + + '' +); + +var seenForwards = {}; + +function forwardRequest(addresses, port, request, response) { + var address = addresses[Math.floor(Math.random() * addresses.length)]; + if (! seenForwards[address]) { + seenForwards[address] = true; + console.log("Forwarding", request.headers.host, "to", address + ":" + port); + } + // Avoid gzipped responses: + delete request.headers["accept-encoding"]; + delete request.headers["if-modified-since"]; + delete request.headers["if-not-matches"]; + delete request.headers["connection"]; + request.headers["connection"] = "close"; + var origHost = request.headers.host; + request.headers.host = request.headers.host.replace(/:\d+$/, "") + ":" + port; + var clientRequest = http.request({ + hostname: address, + port: port, + method: request.method, + path: request.url, + headers: request.headers + }); + clientRequest.on("response", function (clientResponse) { + var contentType = clientResponse.headers["content-type"] || ""; + var isHtml = contentType.indexOf("text/html") != -1; + var isJavascript = contentType.indexOf("javascript") != -1; + var location = clientResponse.headers["location"]; + if (location) { + clientResponse.location = location.replace( + request.headers.host.replace(/:80$/, ""), origHost.replace(/:80$/, "")); + } + if (isHtml) { + var contentLength = clientResponse.headers["content-length"]; + if (contentLength) { + contentLength = parseInt(contentLength, 10); + contentLength += preamble.length; + clientResponse.headers["content-length"] = contentLength + ""; + } + } else if (isJavascript) { + delete clientResponse.headers["content-length"]; + } + response.writeHead(clientResponse.statusCode, clientResponse.headers); + var s; + if ((! isHtml) && ! isJavascript) { + clientResponse.on("data", function (chunk) { + response.write(chunk); + }); + } else { + s = ""; + clientResponse.on("data", function (chunk) { + s += chunk; + }); + } + clientResponse.on("end", function () { + if (isHtml) { + if (s.search(/^/i); + if (pos == -1) { + return preamble + s; + } else { + return s.substr(0, pos+6) + preamble + s.substr(pos+6); + } +} + +function translateJavascript(s) { + return walkabout.rewriteListeners(s) + ""; +} + +function write500(error, response) { + console.warn("Error:", error); + response.writeHead(500, {"Content-Type": "text/plain"}); + if (typeof error != "string") { + error = "\n" + JSON.stringify(error, null, " "); + } + response.end("Error: " + error); +} + +var PORT = parseInt(process.env.PORT || 80, 10); +var BIND = process.env.BIND || "127.0.0.1"; + +if (process.env.PORT_ALIASES) { + process.env.PORT_ALIASES.split(/;/g).forEach(function (part) { + part = part.split(/:/); + PortAliases[part[0]] = part[1]; + }); +} + +console.log("Serving on", "http://"+BIND+":"+PORT); +server.listen(PORT, BIND, function () { +}); diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.html b/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.html new file mode 100644 index 000000000..697269cc1 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.html @@ -0,0 +1,26 @@ + + + + + Walkabout tests + + + + + + + +
      +
      
      +    
      + +
      + + + +
      goes under
      + +
      + + + diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.js b/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.js new file mode 100644 index 000000000..b8f9d758b --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/test_overlap.js @@ -0,0 +1,77 @@ +var fixture = document.getElementById("fixture"); +var modal = document.getElementById("modal"); +var underlay = document.getElementById("underlay"); + +Walkabout.addEventListener(underlay, function (event) { + print("clicked"); +}, false); + +function show(el) { + el.style.display = ""; +} + +function hide(el) { + el.style.display = "none"; +} + +print(Walkabout.visible(modal)); +print(Walkabout.visible(underlay)); +print(Walkabout.clickable(underlay)); +hide(modal); +print(Walkabout.visible(modal)); +show(modal); + +/* => +true +true +true +false +*/ + +hide(underlay); +print(Walkabout.clickable(underlay)); +show(underlay); + +// => false + +modal.style.position = "absolute"; +modal.style.width = "100px"; +modal.style.height = "100px"; +modal.style.top = "0px"; +modal.style.right = "0px"; +modal.style.zIndex = 10; +underlay.style.position = "absolute"; +underlay.style.width = "90px"; +underlay.style.height = "90px"; +underlay.style.top = "5px"; +underlay.style.right = "5px"; +underlay.style.zIndex = 5; + +print(getComputedStyle(modal).getPropertyValue("position")); + +// => absolute + +var rect = modal.getBoundingClientRect(); + +print(rect.bottom, rect.top, rect.height); +print(rect.left, rect.right, rect.width); + +/* => +100 0 100 +? ? 100 +*/ + +print(Walkabout.clickable(underlay)); + +// => false + +underlay.style.zIndex = 15; +print(Walkabout.clickable(underlay)); + +// => true + +underlay.style.zIndex = 5; +underlay.style.right = "20px"; +print(Walkabout.clickable(underlay)); + +// => true diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.html b/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.html new file mode 100644 index 000000000..6e40da3f2 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.html @@ -0,0 +1,35 @@ + + + + + Walkabout tests + + + + + + + + +
      +
      
      +    
      + +
      + + + link +
        +
      • an item 1
      • +
      • an item 2
      • +
      +
      
      +    
      + +
      + +
      + + + diff --git a/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.js b/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.js new file mode 100644 index 000000000..c7454f278 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/libs/walkabout/test_walkabout.js @@ -0,0 +1,218 @@ +jshint("walkabout.js", {evil: true, scripturl: true}); +// => Script passed: .../walkabout.js + +function log(text) { + console.log(text); + if (window.print) { + print(text); + } + $("#log").text($("#log").text() + text + "\n"); +} + +function logger(name) { + return function (text) { + log(name + ": " + text); + }; +} + +$("#button").click(function () { + log("button click"); +}); + +$("#textinput").bindKey({which: 13}, function () { + log("Entered text: " + $("#textinput").val()); + $("#textinput").val(""); +}); + +location.hash = ""; + +$(window).on("hashchange", function () { + var hash = location.hash; + if (! hash) { + return; + } + log("Hash changed: " + hash); + hash = parseInt(hash.substr(1), 10); + $("#link").attr("href", "#" + (hash + 1)); +}); + +$("#fixture").on("click", ".item", function () { + log("Clicked li: " + $(this).text()); +}); + +// => + +var actions = $("#fixture").findActions(); +print(actions); + +/* => + +[ + {element: link, options: {}, type: "click"}, + { + element:
    • an item 1
    • , + handler: function ..., + jQuery: true, + options: {}, + type: "click" + }, + { + element:
    • an item 2
    • , + handler: function ..., + jQuery: true, + options: {}, + type: "click" + }, + { + element: , + handler: function ..., + jQuery: true, + options: {}, + type: "click" + }, + { + element: , + handler: function ..., + jQuery: true, + options: {}, + type: "keypress" + } +] + +*/ + +Walkabout.random.setSeed(100); +jQuery.fn.val.patch(); + +actions.forEach(function (a) { + a.run(); +}); +wait(); + +// I don't understand why "Hash change: #1" happens twice +/* => + +Clicked li: an item 1 +Clicked li: an item 2 +button click +Entered text: zsmOG +Hash changed: #1... +*/ + +// Here we demonstrate that the random numbers are repeatable +// (and hopefully portable): +var rand = Walkabout.RandomStream(1); +for (var i=0; i<10; i++) { + print(rand()); +} + +/* => + +0.0225802504... +0.8612917717... +0.3039651696... +0.8526061845... +0.2648052292... +0.5323929718... +0.9003424612... +0.0378481761... +0.7294780843... +0.4245760307... + +*/ + +$("#textinput").attr("data-walkabout-options", "['a', 'b']"); +print($("#textinput").findActions()); +$("#textinput").findActions()[0].run(); +$("#textinput").findActions()[0].run(); +$("#textinput").findActions()[0].run(); + +/* => + +[ + { + element: , + handler: function ..., + jQuery: true, + options: {}, + type: "keypress" + } +] +Entered text: a +Entered text: a +Entered text: b + +*/ + +location.hash = "#2"; +actions = $("#fixture").findActions(); +var last = actions[actions.length - 1]; +print(last.constructor.name, location.hash); + +// => Back #2 + +last.run(); +print(location.hash); + +// => #1 + +actions = $("#textarea-fixture").findActions(); +print(actions); + +/* => +[ + { + element: +
      + + + + diff --git a/v3/js/togetherjs/togetherjs/recorder.js b/v3/js/togetherjs/togetherjs/recorder.js new file mode 100644 index 000000000..5e32cda60 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/recorder.js @@ -0,0 +1,110 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["jquery", "util", "channels"], function ($, util, channels) { + var recorder = util.Module("recorder"); + var assert = util.assert; + var channel = null; + var baseUrl = null; + var clientId = "recorder"; + + function display(el) { + el = $(el); + var toggles = el.attr("data-toggles"); + if (toggles) { + $(toggles).hide(); + } + el.show(); + } + + recorder.start = function (options) { + $(function () { + $("#record").css({height: $(window).height() - 50}); + $("#restart").click(function () { + location.reload(); + }); + $("#select").click(function () { + $("#record").select(); + }); + recorder.activate(options); + }); + }; + + recorder.activate = function (options) { + var match; + baseUrl = options.baseUrl; + recorder.shareId = TogetherJS.startup._joinShareId; + if (! recorder.shareId) { + match = /\&togetherjs=([^&]+)/.exec(location.hash); + if (! match) { + display("#no-session-id"); + return; + } + recorder.shareId = match[1]; + } + var hubBase = options.defaultHubBase; + match = /\&hubBase=([^&]+)/.exec(location.hash); + if (match) { + hubBase = match[1]; + } + hubBase = hubBase.replace(/\/*$/, ""); + var url = hubBase + "/hub/" + recorder.shareId; + channel = channels.WebSocketChannel(url); + channel.onmessage = function (msg) { + if (msg.type == "hello-back") { + display("#connected"); + } + if (msg.type == "hello") { + sendHello(true); + } + if (msg.type == "get-logs") { + sendLogs(msg); + return; + } + recorder.logMessage(msg); + }; + sendHello(false); + }; + + function sendHello(helloBack) { + var msg = { + type: helloBack ? "hello-back" : "hello", + name: "Recorder 'bot", + // FIXME: replace with robot: + avatar: TogetherJS.baseUrl + "/togetherjs/images/robot-avatar.png", + color: "#888888", + rtcSupported: false, + clientId: clientId, + url: "about:blank" + }; + channel.send(msg); + } + + function sendLogs(req) { + var msg = { + type: "logs", + clientId: clientId, + logs: $("#record").val(), + request: req + }; + channel.send(msg); + } + + recorder.logMessage = function (msg) { + msg.date = Date.now(); + msg = JSON.stringify(msg); + var $record = $("#record"); + $record.val($record.val() + msg + "\n\n"); + }; + + $(window).unload(function () { + channel.send({ + type: "bye", + clientId: clientId + }); + }); + + return recorder; + +}); diff --git a/v3/js/togetherjs/togetherjs/session.js b/v3/js/togetherjs/togetherjs/session.js new file mode 100644 index 000000000..62e6006a0 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/session.js @@ -0,0 +1,483 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["require", "util", "channels", "jquery", "storage"], function (require, util, channels, $, storage) { + + var DEBUG = true; + + // This is the amount of time in which a hello-back must be received after a hello + // for us to respect a URL change: + var HELLO_BACK_CUTOFF = 1500; + + var session = util.mixinEvents(util.Module("session")); + var assert = util.assert; + + // We will load this module later (there's a circular import): + var peers; + + // This is the hub we connect to: + session.shareId = null; + // This is the ID that identifies this client: + session.clientId = null; + session.router = channels.Router(); + // Indicates if TogetherJS has just started (not continuing from a saved session): + session.firstRun = false; + + // This is the key we use for localStorage: + var localStoragePrefix = "togetherjs."; + // This is the channel to the hub: + var channel = null; + + // Setting, essentially global: + session.AVATAR_SIZE = 90; + + var MAX_SESSION_AGE = 30*24*60*60*1000; // 30 days + + /**************************************** + * URLs + */ + var includeHashInUrl = TogetherJS.config.get("includeHashInUrl"); + TogetherJS.config.close("includeHashInUrl"); + var currentUrl = (location.href + "").replace(/\#.*$/, ""); + if (includeHashInUrl) { + currentUrl = location.href; + } + + session.hubUrl = function (id) { + id = id || session.shareId; + assert(id, "URL cannot be resolved before TogetherJS.shareId has been initialized"); + TogetherJS.config.close("hubBase"); + var hubBase = TogetherJS.config.get("hubBase"); + return hubBase.replace(/\/*$/, "") + "/hub/" + id; + }; + + session.shareUrl = function () { + assert(session.shareId, "Attempted to access shareUrl() before shareId is set"); + var hash = location.hash; + var m = /\?[^#]*/.exec(location.href); + var query = ""; + if (m) { + query = m[0]; + } + hash = hash.replace(/&?togetherjs-[a-zA-Z0-9]+/, ""); + hash = hash || "#"; + return location.protocol + "//" + location.host + location.pathname + query + + hash + "&togetherjs=" + session.shareId; + }; + + session.recordUrl = function () { + assert(session.shareId); + var url = TogetherJS.baseUrl.replace(/\/*$/, "") + "/togetherjs/recorder.html"; + url += "#&togetherjs=" + session.shareId + "&hubBase=" + TogetherJS.config.get("hubBase"); + return url; + }; + + /* location.href without the hash */ + session.currentUrl = function () { + if (includeHashInUrl) { + return location.href; + } else { + return location.href.replace(/#.*/, ""); + } + }; + + /**************************************** + * Message handling/dispatching + */ + + session.hub = util.mixinEvents({}); + + var IGNORE_MESSAGES = TogetherJS.config.get("ignoreMessages"); + if (IGNORE_MESSAGES === true) { + DEBUG = false; + IGNORE_MESSAGES = []; + } + // These are messages sent by clients who aren't "part" of the TogetherJS session: + var MESSAGES_WITHOUT_CLIENTID = ["who", "invite", "init-connection"]; + + // We ignore incoming messages from the channel until this is true: + var readyForMessages = false; + + function openChannel() { + assert(! channel, "Attempt to re-open channel"); + console.info("Connecting to", session.hubUrl(), location.href); + var c = channels.WebSocketChannel(session.hubUrl()); + c.onmessage = function (msg) { + if (! readyForMessages) { + if (DEBUG) { + console.info("In (but ignored for being early):", msg); + } + return; + } + if (DEBUG && IGNORE_MESSAGES.indexOf(msg.type) == -1) { + console.info("In:", msg); + } + if (! peers) { + // We're getting messages before everything is fully initialized + console.warn("Message received before all modules loaded (ignoring):", msg); + return; + } + if ((! msg.clientId) && MESSAGES_WITHOUT_CLIENTID.indexOf(msg.type) == -1) { + console.warn("Got message without clientId, where clientId is required", msg); + return; + } + if (msg.clientId) { + msg.peer = peers.getPeer(msg.clientId, msg); + } + if (msg.type == "hello" || msg.type == "hello-back" || msg.type == "peer-update") { + // We do this here to make sure this is run before any other + // hello handlers: + msg.peer.updateFromHello(msg); + } + if (msg.peer) { + msg.sameUrl = msg.peer.url == currentUrl; + if (!msg.peer.isSelf) { + msg.peer.updateMessageDate(msg); + } + } + session.hub.emit(msg.type, msg); + TogetherJS._onmessage(msg); + }; + channel = c; + session.router.bindChannel(channel); + } + + session.send = function (msg) { + if (DEBUG && IGNORE_MESSAGES.indexOf(msg.type) == -1) { + console.info("Send:", msg); + } + msg.clientId = session.clientId; + channel.send(msg); + }; + + session.appSend = function (msg) { + var type = msg.type; + if (type.search(/^togetherjs\./) === 0) { + type = type.substr("togetherjs.".length); + } else if (type.search(/^app\./) === -1) { + type = "app." + type; + } + msg.type = type; + session.send(msg); + }; + + /**************************************** + * Standard message responses + */ + + /* Always say hello back, and keep track of peers: */ + session.hub.on("hello hello-back", function (msg) { + if (msg.type == "hello") { + sendHello(true); + } + if (session.isClient && (! msg.isClient) && + session.firstRun && session.timeHelloSent && + Date.now() - session.timeHelloSent < HELLO_BACK_CUTOFF) { + processFirstHello(msg); + } + }); + + session.hub.on("who", function (msg) { + sendHello(true); + }); + + function processFirstHello(msg) { + if (! msg.sameUrl) { + var url = msg.url; + if (msg.urlHash) { + url += msg.urlHash; + } + require("ui").showUrlChangeMessage(msg.peer, url); + location.href = url; + } + } + + session.timeHelloSent = null; + + function sendHello(helloBack) { + var msg = session.makeHelloMessage(helloBack); + if (! helloBack) { + session.timeHelloSent = Date.now(); + peers.Self.url = msg.url; + } + session.send(msg); + } + + session.makeHelloMessage = function (helloBack) { + var msg = { + name: peers.Self.name || peers.Self.defaultName, + avatar: peers.Self.avatar, + color: peers.Self.color, + url: session.currentUrl(), + urlHash: location.hash, + // FIXME: titles update, we should track those changes: + title: document.title, + rtcSupported: session.RTCSupported, + isClient: session.isClient + }; + if (helloBack) { + msg.type = "hello-back"; + } else { + msg.type = "hello"; + msg.clientVersion = TogetherJS.version; + } + if (! TogetherJS.startup.continued) { + msg.starting = true; + } + // This is a chance for other modules to effect the hello message: + session.emit("prepare-hello", msg); + return msg; + }; + /**************************************** + * Lifecycle (start and end) + */ + + // These are Javascript files that implement features, and so must + // be injected at runtime because they aren't pulled in naturally + // via define(). + // ui must be the first item: + var features = ["peers", "ui", "chat", "webrtc", "cursor", "startup", "videos", "forms", "visibilityApi", "youtubeVideos"]; + + function getRoomName(prefix, maxSize) { + var findRoom = TogetherJS.config.get("hubBase").replace(/\/*$/, "") + "/findroom"; + return $.ajax({ + url: findRoom, + dataType: "json", + data: {prefix: prefix, max: maxSize} + }).then(function (resp) { + return resp.name; + }); + } + + function initIdentityId() { + return util.Deferred(function (def) { + if (session.identityId) { + def.resolve(); + return; + } + storage.get("identityId").then(function (identityId) { + if (! identityId) { + identityId = util.generateId(); + storage.set("identityId", identityId); + } + session.identityId = identityId; + // We don't actually have to wait for the set to succede, so + // long as session.identityId is set + def.resolve(); + }); + }); + } + + initIdentityId.done = initIdentityId(); + + function initShareId() { + return util.Deferred(function (def) { + var hash = location.hash; + var shareId = session.shareId; + var isClient = true; + var set = true; + var sessionId; + session.firstRun = ! TogetherJS.startup.continued; + if (! shareId) { + if (TogetherJS.startup._joinShareId) { + // Like, below, this *also* means we got the shareId from the hash + // (in togetherjs.js): + shareId = TogetherJS.startup._joinShareId; + } + } + if (! shareId) { + // FIXME: I'm not sure if this will ever happen, because togetherjs.js should + // handle it + var m = /&?togetherjs=([^&]*)/.exec(hash); + if (m) { + isClient = ! m[1]; + shareId = m[2]; + var newHash = hash.substr(0, m.index) + hash.substr(m.index + m[0].length); + location.hash = newHash; + } + } + return storage.tab.get("status").then(function (saved) { + var findRoom = TogetherJS.config.get("findRoom"); + TogetherJS.config.close("findRoom"); + if (findRoom && saved && findRoom != saved.shareId) { + console.info("Ignoring findRoom in lieu of continued session"); + } else if (findRoom && TogetherJS.startup._joinShareId) { + console.info("Ignoring findRoom in lieu of explicit invite to session"); + } + if (findRoom && typeof findRoom == "string" && (! saved) && (! TogetherJS.startup._joinShareId)) { + isClient = true; + shareId = findRoom; + sessionId = util.generateId(); + } else if (findRoom && (! saved) && (! TogetherJS.startup._joinShareId)) { + assert(findRoom.prefix && typeof findRoom.prefix == "string", "Bad findRoom.prefix", findRoom); + assert(findRoom.max && typeof findRoom.max == "number" && findRoom.max > 0, + "Bad findRoom.max", findRoom); + sessionId = util.generateId(); + if (findRoom.prefix.search(/[^a-zA-Z0-9]/) != -1) { + console.warn("Bad value for findRoom.prefix:", JSON.stringify(findRoom.prefix)); + } + getRoomName(findRoom.prefix, findRoom.max).then(function (shareId) { + // FIXME: duplicates code below: + session.clientId = session.identityId + "." + sessionId; + storage.tab.set("status", {reason: "joined", shareId: shareId, running: true, date: Date.now(), sessionId: sessionId}); + session.isClient = true; + session.shareId = shareId; + session.emit("shareId"); + def.resolve(session.shareId); + }); + return; + } else if (TogetherJS.startup._launch) { + if (saved) { + isClient = saved.reason == "joined"; + if (! shareId) { + shareId = saved.shareId; + } + sessionId = saved.sessionId; + } else { + isClient = TogetherJS.startup.reason == "joined"; + assert(! sessionId); + sessionId = util.generateId(); + } + if (! shareId) { + shareId = util.generateId(); + } + } else if (saved) { + isClient = saved.reason == "joined"; + TogetherJS.startup.reason = saved.reason; + TogetherJS.startup.continued = true; + shareId = saved.shareId; + sessionId = saved.sessionId; + // The only case when we don't need to set the storage status again is when + // we're already set to be running + set = ! saved.running; + } else { + throw new util.AssertionError("No saved status, and no startup._launch request; why did TogetherJS start?"); + } + assert(session.identityId); + session.clientId = session.identityId + "." + sessionId; + if (set) { + storage.tab.set("status", {reason: TogetherJS.startup.reason, shareId: shareId, running: true, date: Date.now(), sessionId: sessionId}); + } + session.isClient = isClient; + session.shareId = shareId; + session.emit("shareId"); + def.resolve(session.shareId); + }); + }); + } + + function initStartTarget() { + var id; + if (TogetherJS.startup.button) { + id = TogetherJS.startup.button.id; + if (id) { + storage.set("startTarget", id); + } + return; + } + storage.get("startTarget").then(function (id) { + var el = document.getElementById(id); + if (el) { + TogetherJS.startup.button = el; + } + }); + } + session.start = function () { + initStartTarget(); + initIdentityId().then(function () { + initShareId().then(function () { + readyForMessages = false; + openChannel(); + require(["ui"], function (ui) { + TogetherJS.running = true; + ui.prepareUI(); + require(features, function () { + $(function () { + peers = require("peers"); + var startup = require("startup"); + session.emit("start"); + session.once("ui-ready", function () { + readyForMessages = true; + startup.start(); + }); + ui.activateUI(); + TogetherJS.config.close("enableAnalytics"); + if (TogetherJS.config.get("enableAnalytics")) { + require(["analytics"], function (analytics) { + analytics.activate(); + }); + } + peers._SelfLoaded.then(function () { + sendHello(false); + }); + TogetherJS.emit("ready"); + }); + }); + }); + }); + }); + }; + + session.close = function (reason) { + TogetherJS.running = false; + var msg = {type: "bye"}; + if (reason) { + msg.reason = reason; + } + session.send(msg); + session.emit("close"); + var name = window.name; + storage.tab.get("status").then(function (saved) { + if (! saved) { + console.warn("No session information saved in", "status." + name); + } else { + saved.running = false; + saved.date = Date.now(); + storage.tab.set("status", saved); + } + channel.close(); + channel = null; + session.shareId = null; + session.emit("shareId"); + TogetherJS.emit("close"); + TogetherJS._teardown(); + }); + }; + + session.on("start", function () { + $(window).on("resize", resizeEvent); + if (includeHashInUrl) { + $(window).on("hashchange", hashchangeEvent); + } + }); + + session.on("close", function () { + $(window).off("resize", resizeEvent); + if (includeHashInUrl) { + $(window).off("hashchange", hashchangeEvent); + } + }); + + function hashchangeEvent() { + // needed because when message arives from peer this variable will be checked to + // decide weather to show actions or not + sendHello(false); + } + + function resizeEvent() { + session.emit("resize"); + } + + if (TogetherJS.startup._launch) { + setTimeout(session.start); + } + + util.testExpose({ + getChannel: function () { + return channel; + } + }); + + return session; +}); diff --git a/v3/js/togetherjs/togetherjs/startup.js b/v3/js/togetherjs/togetherjs/startup.js new file mode 100644 index 000000000..d3f4bbf1f --- /dev/null +++ b/v3/js/togetherjs/togetherjs/startup.js @@ -0,0 +1,157 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* This module handles all the different UI that happens (sometimes in order) when + TogetherJS is started: + + - Introduce the session when you've been invited + - Show any browser compatibility indicators + - Show the walkthrough the first time + - Show the share link window + + When everything is done it fires session.emit("startup-ready") + +*/ +define(["util", "require", "jquery", "windowing", "storage"], function (util, require, $, windowing, storage) { + var assert = util.assert; + var startup = util.Module("startup"); + // Avoid circular import: + var session = null; + + var STEPS = [ + "browserBroken", + "browserUnsupported", + "sessionIntro", + "walkthrough", + // Look in the share() below if you add anything after here: + "share" + ]; + + var currentStep = null; + + startup.start = function () { + if (! session) { + require(["session"], function (sessionModule) { + session = sessionModule; + startup.start(); + }); + return; + } + var index = -1; + if (currentStep) { + index = STEPS.indexOf(currentStep); + } + index++; + if (index >= STEPS.length) { + session.emit("startup-ready"); + return; + } + currentStep = STEPS[index]; + handlers[currentStep](startup.start); + }; + + var handlers = { + + browserBroken: function (next) { + if (window.WebSocket) { + next(); + return; + } + windowing.show("#togetherjs-browser-broken", { + onClose: function () { + session.close(); + } + }); + if ($.browser.msie) { + $("#togetherjs-browser-broken-is-ie").show(); + } + }, + + browserUnsupported: function (next) { + if (! $.browser.msie) { + next(); + return; + } + var cancel = true; + windowing.show("#togetherjs-browser-unsupported", { + onClose: function () { + if (cancel) { + session.close(); + } else { + next(); + } + } + }); + $("#togetherjs-browser-unsupported-anyway").click(function () { + cancel = false; + }); + }, + + sessionIntro: function (next) { + // pgbovine - pop open chat + windowing.show("#togetherjs-chat"); + + if ((! session.isClient) || ! session.firstRun) { + next(); + return; + } + TogetherJS.config.close("suppressJoinConfirmation"); + if (TogetherJS.config.get("suppressJoinConfirmation")) { + next(); + return; + } + var cancelled = false; + windowing.show("#togetherjs-intro", { + onClose: function () { + if (! cancelled) { + next(); + } + } + }); + $("#togetherjs-intro .togetherjs-modal-dont-join").click(function () { + cancelled = true; + windowing.hide(); + session.close("declined-join"); + }); + }, + + // pgbovine - disable boilerplate walkthrough popup + walkthrough: function (next) { + next(); + }, + /* + walkthrough: function (next) { + storage.settings.get("seenIntroDialog").then(function (seenIntroDialog) { + if (seenIntroDialog) { + next(); + return; + } + require(["walkthrough"], function (walkthrough) { + walkthrough.start(true, function () { + storage.settings.set("seenIntroDialog", true); + next(); + }); + }); + }); + }, + */ + + share: function (next) { + TogetherJS.config.close("suppressInvite"); + if (session.isClient || (! session.firstRun) || + TogetherJS.config.get("suppressInvite")) { + next(); + return; + } + require(["windowing"], function (windowing) { + windowing.show("#togetherjs-share"); + // FIXME: no way to detect when the window is closed + // If there was a next() step then it would not work + }); + } + + }; + + return startup; +}); diff --git a/v3/js/togetherjs/togetherjs/storage.js b/v3/js/togetherjs/togetherjs/storage.js new file mode 100644 index 000000000..1378bd21f --- /dev/null +++ b/v3/js/togetherjs/togetherjs/storage.js @@ -0,0 +1,142 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["util"], function (util) { + var assert = util.assert; + var Deferred = util.Deferred; + var DEFAULT_SETTINGS = { + name: "", + defaultName: "", + avatar: null, + stickyShare: null, + color: null, + seenIntroDialog: false, + seenWalkthrough: false, + dontShowRtcInfo: false + }; + + var DEBUG_STORAGE = false; + + var Storage = util.Class({ + constructor: function (name, storage, prefix) { + this.name = name; + this.storage = storage; + this.prefix = prefix; + }, + + get: function (key, defaultValue) { + var self = this; + return Deferred(function (def) { + // Strictly this isn't necessary, but eventually I want to move to something more + // async for the storage, and this simulates that much better. + setTimeout(util.resolver(def, function () { + key = self.prefix + key; + var value = self.storage.getItem(key); + if (! value) { + value = defaultValue; + if (DEBUG_STORAGE) { + console.debug("Get storage", key, "defaults to", value); + } + } else { + value = JSON.parse(value); + if (DEBUG_STORAGE) { + console.debug("Get storage", key, "=", value); + } + } + return value; + })); + }); + }, + + set: function (key, value) { + var self = this; + if (value !== undefined) { + value = JSON.stringify(value); + } + return Deferred(function (def) { + key = self.prefix + key; + if (value === undefined) { + self.storage.removeItem(key); + if (DEBUG_STORAGE) { + console.debug("Delete storage", key); + } + } else { + self.storage.setItem(key, value); + if (DEBUG_STORAGE) { + console.debug("Set storage", key, value); + } + } + setTimeout(def.resolve); + }); + }, + + clear: function () { + var self = this; + var promises = []; + return Deferred((function (def) { + this.keys().then(function (keys) { + keys.forEach(function (key) { + // FIXME: technically we're ignoring the promise returned by all + // these sets: + promises.push(self.set(key, undefined)); + }); + util.resolveMany(promises).then(function () { + def.resolve(); + }); + }); + }).bind(this)); + }, + + keys: function (prefix, excludePrefix) { + // Returns a list of keys, potentially with the given prefix + var self = this; + return Deferred(function (def) { + setTimeout(util.resolver(def, function () { + prefix = prefix || ""; + var result = []; + for (var i = 0; i < self.storage.length; i++) { + var key = self.storage.key(i); + if (key.indexOf(self.prefix + prefix) === 0) { + var shortKey = key.substr(self.prefix.length); + if (excludePrefix) { + shortKey = shortKey.substr(prefix.length); + } + result.push(shortKey); + } + } + return result; + })); + }); + }, + + toString: function () { + return '[storage for ' + this.name + ']'; + } + + }); + + var namePrefix = TogetherJS.config.get("storagePrefix"); + TogetherJS.config.close("storagePrefix"); + + var storage = Storage('localStorage', localStorage, namePrefix + "."); + + storage.settings = util.mixinEvents({ + defaults: DEFAULT_SETTINGS, + + get: function (name) { + assert(storage.settings.defaults.hasOwnProperty(name), "Unknown setting:", name); + return storage.get("settings." + name, storage.settings.defaults[name]); + }, + + set: function (name, value) { + assert(storage.settings.defaults.hasOwnProperty(name), "Unknown setting:", name); + return storage.set("settings." + name, value); + } + + }); + + storage.tab = Storage('sessionStorage', sessionStorage, namePrefix + "-session."); + + return storage; +}); diff --git a/v3/js/togetherjs/togetherjs/templates-en-US.js b/v3/js/togetherjs/togetherjs/templates-en-US.js new file mode 100644 index 000000000..dc042732b --- /dev/null +++ b/v3/js/togetherjs/togetherjs/templates-en-US.js @@ -0,0 +1,11 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define([], function () { + return { + "interface": "<% /*\n This is basically all the markup and interface for TogetherJS.\n Note all links should be like http://localhost:8080/togetherjs/*\n these links are rewritten with the location where TogetherJS was deployed.\n\n This file is inlined into togetherjs/templates.js\n*/ %>\n
      \n\n \n
      \n
      \n \n \"drag\"\n \n \n \"drag\"\n \n
      \n
      \n
      \n \n
      \n \n \n \n \n
      \n
      \n
      \n\n \n
      \n
      Update avatar
      \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n \n or\n \n
      \n
      \n\n \n
      \n
      Invite a friend
      \n
      \n
      \n

      Copy and paste this link over IM or email:

      \n \n
      \n
      \n

      Copy and paste this link over IM or email:

      \n \n \n
      \n
      \n
      \n\n \n
      \n
      Participants
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      \n\n
      \n

      Role:\n \n

      \n\n

      Currently at:\n \n

      \n\n

      Status:\n \n

      \n\n

      Follow this participant:\n \n \n

      \n\n
      \n\n
      \n \n \n \n
      \n is on the same page as you.\n
      \n
      \n
      \n\n \n
      \n
      Chat
      \n
      \n
      \n \n & You\n
      \n \n
      \n Nobody is here yet. Please wait ...\n
      \n\n
      \n\n
      \n\n \n
      \n
      \n
      HH:MM AM/PM
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      left the session.
      \n
      \n
      \n
      declined to join the session.
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      joined the session.
      \n
      \n
      \n\n \n
      \n \n
      \n\n \n \n\n \n
      \n
      \n
      \n
      \n \n is on the same page as you.\n
      \n
      \n \n has gone to: \n
      \n \n \n
      \n\n \n\n
      \n
      \n
      \n
      \n
      \n\n
      \n \n
      \n
      \n \n
      \n
      \n\n \n
      \n\n
      Audio Chat
      \n
      \n

      \n Activate your browser microphone near your URL bar above.\n

      \n

      \n Talking on your microphone through your web browser is an experimental feature.\n

      \n

      \n Read more about Audio Chat here.\n

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Audio Chat
      \n\n
      \n

      Audio chat requires you to use a newer browser!

      \n

      \n Live audio chat requires a newer (or different) browser than you're using.\n

      \n

      \n See this pagefor more information and a list of supported browsers.\n

      \n
      \n\n
      \n
      \n \n
      \n
      \n
      \n\n \n
      \n \"\"\n \"[close]\"\n
      \n
      \n
      \n\n \n
      \n
      \n \n [nickname]\n \n
      \n
      \n
      \"\" Update your name
      \n
      \"\" Change avatar
      \n
      Pick profile color
      \n
      \n
      Help
      \n
      Feedback
      \n
      \n
      \n
      \n
      Refresh users
      \n
      Invite anyone
      \n
      \n
      \n
      \"\" End TogetherJS
      \n
      \n\n \n
      \n
      \n \n \n
      \n
      \n\n \n
      \n
      Settings and Profile
      \n
      \n
      \n \n \n
      \n
      \n
      \"\" Update your name
      \n
      \"\" Change avatar
      \n
      Pick profile color
      \n
      \n
      Help
      \n
      Feedback
      \n
      \n
      \"\" End TOOL_NAME
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      Update Name
      \n
      \n
      \n \n
      \n
      \n
      \n \n
      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n \n \n \n\n \n
      \n
      Join TOOL_NAME session?
      \n
      \n

      Your friend has asked you to join their TOOL_SITE_LINK browser session to collaborate in real-time!

      \n

      Would you like to join their session?

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Sorry
      \n\n
      \n

      \n We're sorry, TOOL_NAME doesn't work with this browser. Please upgrade to a supported browser to try TOOL_NAME.\n

      \n\n

      \n We need your help fixing TogetherJS on Internet Explorer! Here are a list of IE GitHub issues we need fixed that you can work on.\n Internet Explorer is currently not supported. If you do want to try out TogetherJS, we'd suggest using Firefox or Chrome.\n

      \n
      \n\n
      \n \n
      \n\n
      \n\n \n
      \n
      Unsupported Browser
      \n\n
      \n

      \n We need your help fixing TogetherJS on Internet Explorer! Here are a list of IE GitHub issues we need fixed that you can work on.\n Internet Explorer is currently not supported. If you do want to try out TogetherJS, we'd suggest using Firefox or Chrome.\n

      \n\n

      You can continue to try to use TOOL_NAME, but you are likely to hit lots of bugs. So be warned.

      \n\n
      \n\n
      \n \n \n
      \n\n
      \n\n
      \n
      End session?
      \n
      \n

      \n Are you sure you'd like to end your TOOL_NAME session?\n

      \n
      \n
      \n \n or\n \n
      \n
      \n\n
      \n
      Feedback
      \n \n \n
      \n\n
      \n \n
      \n
      Following to new URL...
      \n
      \n
      \n Following\n \n to \n
      \n
      \n\n \n
      \n
      \n
      \n \n has invited anyone\n you\n to \n
      \n
      \n\n
      \n\n \n
      \n
      \n\n \n
      \n\n \n
      \n\n \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n
      \n\n \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      \n", + walkthrough: "\n
      \n
      You're using TOOL_NAME!
      \n\n
      \n
      \n\n
      \n

      \n\t

      TOOL_NAME is a service for your website that makes it easy to collaborate in real-time on SITE_NAME

      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n

      Set up your avatar, name and user color above. If you'd like to update it later, you can click your Profile button.

      \n
      \n
      \n

      \n

      Change your avatar, name and user color using the Profile button.

      \n
      \n
      \n\n
      \n

      \n

      \n

      You can invite more friends to the session by sending the invite link in the TOOL_NAME dock.

      \n

      \n \n Copy and paste this link into IM or email to invite friends.\n \n \n

      \n

      Send the above link to a friend so they can join your session! You can find this invite link on the TOOL_NAME dock as well.

      \n
      \n\n
      \n

      \n

      Friends who join your TOOL_NAME session will appear here. You can click their avatars to see more.

      \n
      \n\n
      \n

      \n

      When your friends join you in your TOOL_NAME session, you can chat with them here!

      \n
      \n\n
      \n

      \n

      If your browser supports it, click the microphone icon to begin a audio chat. Learn more about this experimental feature here.

      \n
      \n\n
      \n

      \n

      Alright, you're ready to use TOOL_NAME. Now start collaborating on SITE_NAME!

      \n
      \n\n
      \n \n \n
      \n
      \n
      \n\n
      \n \n
      \n\n
      \n", + names: "Friendly Fox, Brilliant Beaver, Observant Owl, Gregarious Giraffe, Wild Wolf, Silent Seal, Wacky Whale, Curious Cat, Intelligent Iguana" + }; +}); diff --git a/v3/js/togetherjs/togetherjs/templates-ru.js b/v3/js/togetherjs/togetherjs/templates-ru.js new file mode 100644 index 000000000..6b00ac358 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/templates-ru.js @@ -0,0 +1,11 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define([], function () { + return { + "interface": "<% /*\n This is basically all the markup and interface for TogetherJS.\n Note all links should be like http://localhost:8080/togetherjs/*\n these links are rewritten with the location where TogetherJS was deployed.\n\n This file is inlined into togetherjs/templates.js\n*/ %>\n
      \n\n \n
      \n
      \n \n \"drag\"\n \n \n \"drag\"\n \n
      \n
      \n
      \n \n
      \n \n \n \n \n
      \n
      \n
      \n\n \n
      \n
      Обновить аватар
      \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n \n или\n \n
      \n
      \n\n \n
      \n
      Пригласить друга
      \n
      \n
      \n

      Скопируйте эту ссылку и приклейте её в IM или в имейл:

      \n \n
      \n
      \n

      Скопируйте эту ссылку и приклейте её в IM или в имейл:

      \n \n \n
      \n
      \n
      \n\n \n
      \n
      Участники
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      \n\n
      \n

      Роль:\n \n

      \n\n

      Сейчас на:\n \n

      \n\n

      Статус:\n \n

      \n\n

      Следовать за этим участником:\n \n \n

      \n\n
      \n\n
      \n \n \n \n
      \n с Вами на одной странице.\n
      \n
      \n
      \n\n \n
      \n
      Чат
      \n
      \n
      \n \n & Вы\n
      \n \n
      \n Nobody is here yet. Please wait ...\n
      \n\n
      \n\n
      \n\n \n
      \n
      \n
      HH:MM AM/PM
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      покинул сеанс.
      \n
      \n
      \n
      отказался присоединиться к сеансу.
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      присоединился к сеансу.
      \n
      \n
      \n\n \n
      \n \n
      \n\n \n \n\n \n
      \n
      \n
      \n
      \n \n с Вами на одной странице.\n
      \n
      \n \n отправился на: \n
      \n \n \n
      \n\n \n\n
      \n
      \n
      \n
      \n
      \n\n
      \n \n
      \n
      \n \n
      \n
      \n\n \n
      \n\n
      Аудио-чат
      \n
      \n

      \n Включите микрофон браузера возле адресной строки вверху.\n

      \n

      \n Разговор по микрофону через веб-браузер - экспериментальное свойство.\n

      \n

      \n Почитайте больше об аудио-чате здесь.\n

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Аудио-чат
      \n\n
      \n

      Аудио-чат требует, чтобы Вы использовалибраузер поновее!

      \n

      \n Для живого аудио-чата требуется более новый (или другой) браузер, чем тот, который Вы используете.\n

      \n

      \n Посмотрите на 'этой странице' дополнительную информацию и список поддерживаемых браузеров.\n

      \n
      \n\n
      \n
      \n \n
      \n
      \n
      \n\n \n
      \n \"\"\n \"[close]\"\n
      \n
      \n
      \n\n \n
      \n
      \n \n [nickname]\n \n
      \n
      \n
      \"\" Обновить своё имя
      \n
      \"\" Изменить аватар
      \n
      Выбрать цвет профиля
      \n
      \n
      Помощь
      \n
      Отзывы и предложения
      \n
      \n
      \n
      \n
      Refresh users
      \n
      Пригласить кого-нибудь
      \n
      \n
      \n
      \"\" Закончить TogetherJS
      \n
      \n\n \n
      \n
      \n \n \n
      \n
      \n\n \n
      \n
      Установки и профиль
      \n
      \n
      \n \n \n
      \n
      \n
      \"\" Обновить своё имя
      \n
      \"\" Изменить аватар
      \n
      Выбрать цвет профиля
      \n
      \n
      Помощь
      \n
      Отзывы и предложения
      \n
      \n
      \"\" Закончить TOOL_NAME
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      Обновить имя
      \n
      \n
      \n \n
      \n
      \n
      \n \n
      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n \n \n \n\n \n
      \n
      Присоединиться к сеансу TOOL_NAME?
      \n
      \n

      Ваш друг просит Вас присоединиться к его TOOL_SITE_LINK браузер-сеансу, чтобы сотрудничать с Вами в реальном времени!

      \n

      Хотели бы Вы присоединиться к его сеансу?

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Извините
      \n\n
      \n

      \n Извините, TOOL_NAME не работает на этом браузере. Просьба обновиться до поддерживаемого браузера, чтобы попробовать TOOL_NAME.\n

      \n\n

      \n Нам нужна Ваша помощь в починке TogetherJS на Internet Explorer! Вот список ошибок на GitHub, которые нам нужно починить, и над которыми Вы можете поработать.\n Internet Explorer в настоящее время не поддерживается. Если Вы действительно хотите испытать TogetherJS, советуем Вам использовать Firefox или Chrome.\n

      \n
      \n\n
      \n \n
      \n\n
      \n\n \n
      \n
      Браузер не поддерживается
      \n\n
      \n

      \n Нам нужна Ваша помощь в починке TogetherJS на Internet Explorer! Вот список ошибок на GitHub, которые нам нужно починить, и над которыми Вы можете поработать.\n Internet Explorer в настоящее время не поддерживается. Если Вы действительно хотите испытать TogetherJS, советуем Вам использовать Firefox или Chrome.\n

      \n\n

      Вы можете продолжать пробовать использовать TOOL_NAME, но скорее всего Вы получите массу ошибок. Мы Вас предупредили.

      \n\n
      \n\n
      \n \n \n
      \n\n
      \n\n
      \n
      Закончить сеанс?
      \n
      \n

      \n Вы уверены, что хотите завершить свой сеанс TOOL_NAME?\n

      \n
      \n
      \n \n или\n \n
      \n
      \n\n
      \n
      Отзывы и предложения
      \n \n \n
      \n\n
      \n \n
      \n
      Следую на новый URL...
      \n
      \n
      \n Следую\n \n на \n
      \n
      \n\n \n
      \n
      \n
      \n \n пригласил кого-либо\n Вас\n на \n
      \n
      \n\n
      \n\n \n
      \n
      \n\n \n
      \n\n \n
      \n\n \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n
      \n\n \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      \n", + walkthrough: "\n
      \n
      Вы используете TOOL_NAME!
      \n\n
      \n
      \n\n
      \n

      \n\t

      TOOL_NAME - это служба для Вашего сайта, которая помогает Вам сотрудничать с другими в реальном времени на сайте SITE_NAME

      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n

      Задайте свои аватар, имя и пользовательский цвет вверху. При желании изменить их позднее, щёлкните по кнопке Профиль.

      \n
      \n
      \n

      \n

      Вы можете изменить свои аватар, имя и пользовательский цвет, используя кнопку Профиль.

      \n
      \n
      \n\n
      \n

      \n

      \n

      Вы можете пригласить ещё друзей на Ваш сеанс, послав им ссылку с приглашением на панели TOOL_NAME.

      \n

      \n \n Скопируйте и приклейте эту ссылку в IM или в имейл, чтобы пригласить друзей.
      \n
      \n \n

      \n

      Пошлите другу ссылку вверху, чтобы он мог присоединиться к Вашему сеансу! Вы также можете найти эту ссылку с приглашением на панели TOOL_NAME.

      \n
      \n\n
      \n

      \n

      Друзья, которые присоединятся к Вашему сеансу TOOL_NAME, появятся здесь. Вы можете щёлкнуть по аватару друга, чтобы увидеть больше информации.

      \n
      \n\n
      \n

      \n

      Когда Ваши друзья присоединятся к Вашему сеансу TOOL_NAME, Вы сможете общаться с ними здесь!

      \n
      \n\n
      \n

      \n

      Если Ваш браузер поддерживает аудио-чат, Вы можете запустить его нажатием на иконку микрофона. Узнайте побольше об этой экспериментальной функции здесь.

      \n
      \n\n
      \n

      \n

      Ну вот Вы и готовы использовать TOOL_NAME. Теперь начинайте сотрудничать на сайте SITE_NAME!

      \n
      \n\n
      \n \n \n
      \n
      \n
      \n\n
      \n \n
      \n\n
      \n", + names: "Лысый Лис, Большой Бобёр, Умная Сова, Жирный Жираф, Серый Волк, Толстый Тюлень, Рыба-кит, Кисьян Котяра, Известная Игуана" + }; +}); diff --git a/v3/js/togetherjs/togetherjs/templates.js b/v3/js/togetherjs/togetherjs/templates.js new file mode 100644 index 000000000..b7fb53bc7 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/templates.js @@ -0,0 +1,43 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// FIXME: maybe it would be better to dynamically assemble the first +// argument to define() here to include the localized module: +define(["util", "require"], function (util, require) { + var assert = util.assert; + + function clean(t) { + // Removes <% /* ... */ %> comments: + t = t.replace(/[<][%]\s*\/\*[\S\s\r\n]*\*\/\s*[%][>]/, ""); + t = util.trim(t); + t = t.replace(/http:\/\/localhost:8080/g, TogetherJS.baseUrl); + t = t.replace(/TOOL_NAME/g, 'TogetherJS'); + t = t.replace(/SITE_NAME/g, '[site name]'); + t = t.replace(/TOOL_SITE_LINK/g, 'TogetherJS'); + return t; + } + + var lang = TogetherJS.getConfig("lang") || "en-US"; + var moduleName = "templates-" + lang; + var templatesLang; + require([moduleName], function (mod) { + templatesLang = mod; + }); + + return function (resourceName) { + // Sometimes require([moduleName]) doesn't return even after the + // module has been loaded, but this sync version of require() will + // pick up the module in that case: + if (! templatesLang) { + try { + templatesLang = require(moduleName); + } catch (e) { + console.warn("Error requiring module:", e); + } + } + assert(templatesLang, "Templates not yet loaded"); + return clean(templatesLang[resourceName]); + }; + +}); diff --git a/v3/js/togetherjs/togetherjs/templating.js b/v3/js/togetherjs/togetherjs/templating.js new file mode 100644 index 000000000..61d4ce864 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/templating.js @@ -0,0 +1,81 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define(["jquery", "util", "peers", "windowing", "session"], function ($, util, peers, windowing, session) { + var assert = util.assert; + var templating = util.Module("templating"); + + templating.clone = function (templateId) { + templateId = "#togetherjs-template-" + templateId; + var template = $(templateId); + assert(template.length, "No template found with id:", templateId); + template = template.clone(); + template.attr("id", null); + // FIXME: if called directly, doesn't emit new-element event: + return template; + }; + + templating.sub = function (templateId, variables) { + var template = templating.clone(templateId); + variables = variables || {}; + util.forEachAttr(variables, function (value, attr) { + // FIXME: do the substitution... somehow? + var subs = template.find(".togetherjs-sub-" + attr).removeClass("togetherjs-sub-" + attr); + if (subs.length) { + if (typeof value == "string") { + subs.text(value); + } else if (value instanceof $) { + subs.append(value); + } else { + assert(false, "Unknown variable value type:", attr, "=", value); + } + } + var ifs = template.find(".togetherjs-if-" + attr).removeClass("togetherjs-sub-" + attr); + if (! value) { + ifs.hide(); + } + ifs = template.find(".togetherjs-ifnot-" + attr).removeClass("togetherjs-ifnot-" + attr); + if (value) { + ifs.hide(); + } + var attrName = "data-togetherjs-subattr-" + attr; + var attrs = template.find("[" + attrName + "]"); + attrs.each(function (index, element) { + assert(typeof value == "string"); + element = $(element); + var subAttribute = element.attr(attrName); + element.attr(attrName, null); + element.attr(subAttribute, value); + }); + }); + if (variables.peer) { + variables.peer.view.setElement(template); + } + if (variables.date) { + var date = variables.date; + if (typeof date == "number") { + date = new Date(date); + } + var ampm = "AM"; + var hour = date.getHours(); + if (hour > 12) { + hour -= 12; + ampm = "PM"; + } + var minute = date.getMinutes(); + var t = hour + ":"; + if (minute < 10) { + t += "0"; + } + t += minute; + template.find(".togetherjs-time").text(t); + template.find(".togetherjs-ampm").text(ampm); + } + + // FIXME: silly this is on session: + session.emit("new-element", template); + return template; + }; + + return templating; +}); diff --git a/v3/js/togetherjs/togetherjs/togetherjs.css b/v3/js/togetherjs/togetherjs/togetherjs.css new file mode 100644 index 000000000..ca2cedf13 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/togetherjs.css @@ -0,0 +1,2728 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public +* License, v. 2.0. If a copy of the MPL was not distributed with this file, +* You can obtain one at http://mozilla.org/MPL/2.0/. */ +/*Fonts*/ +@font-face { + font-family: openSansRegular; + src: url('fonts/OpenSans-Regular.ttf'); +} +@font-face { + font-family: openSansLight; + src: url('fonts/OpenSans-Light.ttf'); +} +@font-face { + font-family: openSansBold; + src: url('fonts/OpenSans-Bold.ttf'); +} +/* .togetherjs reset */ +/* http://yuilibrary.com/yui/docs/cssreset/ */ +.togetherjs { + /* +YUI 3.10.3 (build 2fb5187) +Copyright 2013 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ + + /* + TODO think about hanlding inheritence differently, maybe letting IE6 fail a bit... +*/ + + /* to preserve line-height and selector appearance */ + + /*to enable resizing for IE*/ + + /*because legend doesn't inherit in IE */ + +} +.togetherjs * { + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + box-sizing: content-box !important; +} +.togetherjs header { + width: auto; +} +.togetherjs div, +.togetherjs dl, +.togetherjs dt, +.togetherjs dd, +.togetherjs ul, +.togetherjs ol, +.togetherjs li, +.togetherjs h1, +.togetherjs h2, +.togetherjs h3, +.togetherjs h4, +.togetherjs h5, +.togetherjs h6, +.togetherjs pre, +.togetherjs code, +.togetherjs form, +.togetherjs fieldset, +.togetherjs legend, +.togetherjs input, +.togetherjs textarea, +.togetherjs p, +.togetherjs blockquote, +.togetherjs th, +.togetherjs td { + margin: 0; + padding: 0; +} +.togetherjs table { + border-collapse: collapse; + border-spacing: 0; +} +.togetherjs fieldset, +.togetherjs img { + border: 0; +} +.togetherjs address, +.togetherjs caption, +.togetherjs cite, +.togetherjs code, +.togetherjs dfn, +.togetherjs em, +.togetherjs strong, +.togetherjs th, +.togetherjs var { + font-style: normal; + font-weight: normal; +} +.togetherjs ol, +.togetherjs ul { + list-style: none; +} +.togetherjs caption, +.togetherjs th { + text-align: left; +} +.togetherjs h1, +.togetherjs h2, +.togetherjs h3, +.togetherjs h4, +.togetherjs h5, +.togetherjs h6 { + font-size: 100%; + font-weight: normal; +} +.togetherjs q:before, +.togetherjs q:after { + content: ''; +} +.togetherjs abbr, +.togetherjs acronym { + border: 0; + font-variant: normal; +} +.togetherjs sup { + vertical-align: text-top; +} +.togetherjs sub { + vertical-align: text-bottom; +} +.togetherjs input, +.togetherjs textarea, +.togetherjs select { + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} +.togetherjs input, +.togetherjs textarea, +.togetherjs select { + *font-size: 100%; +} +.togetherjs legend { + color: #000; +} +.togetherjs { + /* General styles */ + + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial; + font-size: 14px; + line-height: 20px; + color: #333333; + font-weight: normal; +} +.togetherjs a { + color: #0095DD; + text-decoration: none; +} +.togetherjs a:hover { + color: #0095DD; + text-decoration: underline; +} +.togetherjs p { + margin: 7px 0 7px 0; +} +.togetherjs button, +.togetherjs img { + vertical-align: middle; +} +.togetherjs input:focus { + outline: none; +} +.togetherjs button::-moz-focus-inner, +.togetherjs input::-moz-focus-inner { + padding: 0; + border: 0; +} +.togetherjs .togetherjs-right { + float: right; +} +button:disabled { + opacity: 0.2; +} +button[disabled]:hover { + background: #0194DB; +} +.togetherjs-default { + display: inline-block; + border-radius: 4px; + text-align: center; + height: 40px; + /*line-height not consistent across browsers*/ + + line-height: 37px; + text-decoration: none; + min-width: 100px; + border: none; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + /*transition: all 0.25s linear 0s;*/ + + text-shadow: none; + margin: 3px; + font-size: 14px; + background: #9A9A9A; + color: #fff; +} +.togetherjs-default.togetherjs-follow { + cursor: pointer; +} +.togetherjs-default:hover { + background: #ADADAD; +} +.togetherjs-primary { + display: inline-block; + border-radius: 4px; + text-align: center; + height: 40px; + /*line-height not consistent across browsers*/ + + line-height: 37px; + text-decoration: none; + min-width: 100px; + border: none; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + /*transition: all 0.25s linear 0s;*/ + + text-shadow: none; + margin: 3px; + font-size: 14px; + background: #0194DB; + color: #fff; +} +.togetherjs-primary.togetherjs-follow { + cursor: pointer; +} +.togetherjs-primary:hover { + background: #00ACFF; +} +a.togetherjs-primary, +a.togetherjs-default, +a.togetherjs-secondary, +a.togetherjs-primary:link, +a.togetherjs-default:link, +a.togetherjs-secondary:link, +a.togetherjs-primary:active, +a.togetherjs-default:active, +a.togetherjs-secondary:active, +a.togetherjs-primary:visited, +a.togetherjs-default:visited, +a.togetherjs-secondary:visited, +a.togetherjs-primary:hover, +a.togetherjs-default:hover, +a.togetherjs-secondary:hover { + color: #fff; + text-decoration: none; + vertical-align: middle; +} +#togetherjs-avatar-edit .togetherjs-person-avatar-swatch { + margin-left: 22px; +} +#togetherjs-avatar-edit .togetherjs-person { + float: left; + height: 36px; + width: 36px; + margin: 35px; + background-repeat: no-repeat; + background-size: 40px 40px; + background-position: -2px -1px; + border: 2px solid; + border-radius: 2px; + background-clip: border-box; +} +#togetherjs-avatar-edit #togetherjs-avatar-buttons { + float: right; + width: 172px; + padding: 45px 0px; +} +input.togetherjs-upload-avatar { + line-height: 0px; + width: 174px; + margin-left: -20px; +} +#togetherjs-upload-avatar { + float: left; +} +#togetherjs-camera-avatar { + clear: both; +} +#togetherjs-avatar-edit .togetherjs-buttons { + clear: both; +} +.togetherjs-destructive { + display: inline-block; + border-radius: 4px; + text-align: center; + height: 40px; + /*line-height not consistent across browsers*/ + + line-height: 37px; + text-decoration: none; + min-width: 100px; + border: none; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + /*transition: all 0.25s linear 0s;*/ + + text-shadow: none; + margin: 3px; + font-size: 14px; + background: #AC2924; + color: #ffffff; +} +.togetherjs-destructive:hover { + background: #d40606; +} +.togetherjs-secondary { + display: inline-block; + border-radius: 4px; + text-align: center; + height: 40px; + /*line-height not consistent across browsers*/ + + line-height: 37px; + text-decoration: none; + min-width: 100px; + border: none; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + /*transition: all 0.25s linear 0s;*/ + + text-shadow: none; + margin: 3px; + font-size: 14px; + background: #999999; + /* Old browsers */ + + background: -moz-linear-gradient(top, #999999 0%, #888888 100%); + /* FF3.6+ */ + + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #999999), color-stop(100%, #888888)); + /* Chrome,Safari4+ */ + + background: -webkit-linear-gradient(top, #999999 0%, #888888 100%); + /* Chrome10+,Safari5.1+ */ + + background: -o-linear-gradient(top, #999999 0%, #888888 100%); + /* Opera 11.10+ */ + + background: -ms-linear-gradient(top, #999999 0%, #888888 100%); + /* IE10+ */ + + background: linear-gradient(to bottom, #999999 0%, #888888 100%); + /* W3C */ + + color: #fff; +} +.togetherjs-cancel { + display: inline-block; + background: inherit; + border: none; + padding: 3px 0px; + margin: 0px 0px 0px; + min-width: 0; + font-size: 14px; + color: #333333; + font-family: openSansLight, Helvetica; + vertical-align: -2px !important; +} +.togetherjs-cancel:hover { + cursor: pointer; + border-bottom: 1px solid #BCBCBC; + margin: 0px 0px -1px; +} +.togetherjs-alt-text { + vertical-align: -2px; +} +/*FIX ME something weird is going on here. the avatar has no paddingTop only on Safari*/ +/*button#togetherjs-profile-button.togetherjs-button { + padding:10px 0px !important; +}*/ +/* General dock rules: */ +.togetherjs #togetherjs-buttons .togetherjs-button { + background-color: inherit; + border: none; + padding: 0; + margin: 0; + position: relative; + width: 60px; + height: 60px; + background-size: 40px 40px; + background-repeat: no-repeat; + background-position: center; + border-top: 1px solid rgba(0, 0, 0, 0.2); +} +.togetherjs #togetherjs-buttons .togetherjs-button:hover { + background-color: #0F81BF; +} +.togetherjs #togetherjs-buttons hr { + padding: 0; + margin: 0; +} +.togetherjs #togetherjs-dock-participants button.togetherjs-active { + background-color: #0F81BF !important; +} +.togetherjs #togetherjs-buttons #togetherjs-share-button { + background-image: url('./images/button-share.png'); +} +.togetherjs #togetherjs-buttons #togetherjs-share-button:hover { + background-image: url('./images/button-share-active.png'); +} +.togetherjs #togetherjs-buttons #togetherjs-share-button.togetherjs-active { + background-image: url('./images/button-share-active.png') !important; + background-color: #0F81BF; +} +.togetherjs #togetherjs-buttons #togetherjs-audio-button { + background-image: url('./images/button-mic.png'); +} +.togetherjs #togetherjs-buttons #togetherjs-audio-button:hover { + background-image: url('./images/button-mic-active.png'); + /*background-color:#0095dd;*/ + + /*cursor: default;*/ + +} +.togetherjs #togetherjs-buttons #togetherjs-audio-button.togetherjs-active { + background-image: url('./images/button-mic-active.png') !important; + background-color: #0F81BF; +} +.togetherjs #togetherjs-buttons #togetherjs-chat-button { + background-image: url('./images/button-chat.png'); +} +.togetherjs #togetherjs-buttons #togetherjs-chat-button:hover { + background-image: url('./images/button-chat-active.png'); +} +.togetherjs #togetherjs-buttons #togetherjs-chat-button.togetherjs-active { + background-image: url('./images/button-chat-active.png') !important; + background-color: #0F81BF; +} +.togetherjs #togetherjs-dock-anchor { + height: 20px; + text-align: center; + /* FIXME: disabling dock movement for now, cursor would be misleading: */ + + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; + position: relative; + left: 0px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.togetherjs .togetherjs-subtitle { + background: #0195DD; + width: 280px; + height: 17px; + border-bottom: 1px solid #0071A7; + color: rgba(255, 255, 255, 0.5); + font-size: 12px; + padding: 7px 10px; + left: -14px; + top: -15px; + position: relative; +} +.togetherjs .togetherjs-subtitle #togetherjs-chat-participants { + font-size: 12px; + color: rgba(255, 255, 255, 0.5); +} +.togetherjs .togetherjs-subtitle #togetherjs-chat-no-participants { + font-size: 12px; + color: rgba(255, 255, 255, 0.5); +} +.togetherjs .togetherjs-subtitle #togetherjs-chat-participant-list { + font-size: 12px; + color: rgba(255, 255, 255, 0.5); +} +.togetherjs #togetherjs-chat-input { + width: 264px; + height: 20px; + overflow-x: hidden; + overflow-y: hidden; + resize: none; + font-size: 14px; + padding: 4px 6px 5px; + border-radius: 4px; + border: 1px solid #cccccc; + /*box-shadow: inset 0 2px 2px rgba(0,0,0,0.1);*/ + + font-family: openSansLight, Helvetica, sans-serif; +} +.togetherjs #togetherjs-chat-input:focus { + border: 1px solid #0095DD; +} +.togetherjs #togetherjs-chat-input-box { + margin: 0; + padding: 10px 10px 11px; + border-top: 1px solid rgba(0, 0, 0, 0.1); + background: #F2F2F2; + position: relative; + /*box-shadow: 0 -1px 2px rgba(0,0,0,0.1);*/ + + height: 31px; + width: 280px; + margin-left: -7px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.togetherjs .togetherjs-window #togetherjs-chat-messages { + width: 300px; + position: relative; + left: -14px; + background: #fff; + top: -30px; + margin-bottom: -30px !important; +} +.togetherjs .togetherjs-chat-item { + padding: 0 0 20px 0; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + font-size: 14px; + padding: 10px 0px; + margin: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + color: #333333; + min-height: 60px; +} +.togetherjs #togetherjs-chat-messages .togetherjs-chat-item a.togetherjs-person-url { + width: 105px; + white-space: nowrap; + vertical-align: top; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; +} +.togetherjs #togetherjs-chat-messages .togetherjs-person-self { + float: left; + margin-bottom: 20px; + margin-top: 7px; +} +.togetherjs #togetherjs-chat-messages .togetherjs-person { + float: left; + margin-bottom: 20px; +} +.togetherjs .togetherjs-person-name-abbrev { + color: #333333; + font-family: openSansRegular, Helvetica, sans-serif; + padding-top: 2px; +} +.togetherjs .togetherjs-timestamp { + float: right; + color: rgba(51, 51, 51, 0.5); + font-size: 9px !important; + padding: 0 15px; +} +.togetherjs .togetherjs-chat-content { + white-space: pre-wrap; + line-height: 20px; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + margin: 3px 15px 3px 60px; +} +.togetherjs #togetherjs-window-pointer-right, +.togetherjs #togetherjs-window-pointer-left { + position: fixed; + width: 10px; + height: 10px; + margin-right: -5px; + margin-top: -5px; + background: #fff; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + z-index: 10002; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); +} +.togetherjs #togetherjs-window-pointer-right { + -moz-transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} +.togetherjs #togetherjs-window-pointer-left { + -moz-transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} +.togetherjs .togetherjs-window { + position: fixed; + background-color: #ffffff; + color: #000000; + padding: 0 7px 0 7px; + z-index: 10001; + width: 286px; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); +} +.togetherjs .togetherjs-window section { + margin: 15px 7px; +} +.togetherjs .togetherjs-window > header { + font-weight: bold; + font-variant: normal; + text-align: center; + font-family: openSansRegular, Helvetica; + color: #fff; + margin: 0 -7px 0 -7px; + padding: 10px 4px 5px 30px; + height: 24px; + background: #0095DD; + border-radius: 4px 4px 0 0; + position: relative; + border-bottom: 1px solid #0071A7; +} +.togetherjs .togetherjs-window .togetherjs-share-link { + width: 256px; + font-size: 12px; + padding: 6px 6px 4px; + border-radius: 4px; + border: 1px solid #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + font-family: Monaco, sans-serif; + margin: 7px 0px; +} +.togetherjs .togetherjs-window .togetherjs-share-link:focus { + border: 1px solid #0095DD; +} +.togetherjs .togetherjs-window header button.togetherjs-close { + background-color: inherit; + border: none; + padding: 0; + margin: 0; + border-left: 1px solid #0071A7; + float: right; + font-weight: bold; + cursor: pointer; + background-image: url('./images/icon-close@2x.png'); + background-position: center center; + background-repeat: no-repeat; + background-size: 13px 13px; + width: 39px; + height: 39px; + margin-top: -10px; + margin-right: -4px; + border-top-right-radius: 4px; +} +.togetherjs .togetherjs-window header button.togetherjs-close:hover { + background-image: url('./images/icon-close-active.png'); + background-color: rgba(0, 0, 0, 0.1); +} +.togetherjs .togetherjs-window #togetherjs-chat-messages { + overflow-y: auto; + /*FIXME: I'm just pulling numbers out of thin air here:*/ + + /* pgbovine -- make a bit smaller */ + + height: 180px; + /* + height: 260px; + */ + +} +.togetherjs #togetherjs-feedback-form > header { + font-weight: bold; + font-variant: normal; + text-align: center; + font-family: openSansRegular, Helvetica, sans-serif; + color: #fff; + margin: 0 -1px 0 -1px; + padding: 10px 4px 5px 30px; + height: 24px; + background: #0095DD; + border-radius: 4px 4px 0 0; + position: relative; + border-bottom: 1px solid #0071A7; +} +.togetherjs #togetherjs-feedback-form.togetherjs-modal { + background-color: #fff; + color: #000000; + padding: 0 0 5px 0; + border-radius: 2px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + border-left: 1px solid #c9c9c9; + border-right: 1px solid #c9c9c9; + border-bottom: 1px solid #c9c9c9; + position: fixed; + top: 46%; + left: 47%; + margin-left: -150px; + margin-top: -10em; + height: 24em; + width: 399px; +} +.togetherjs #togetherjs-alpha-intro .togetherjs-small-feedback-txt { + font-size: 10px; +} +.togetherjs #togetherjs-alpha-intro .togetherjs-modal-close:hover { + background: #61921b; +} +.togetherjs #togetherjs-alpha-intro { + height: 24em; +} +.togetherjs #togetherjs-intro .togetherjs-modal-dont-join { + /* background-repeat: repeat-x; + border: 0; + color: rgb(255, 255, 255); + cursor: pointer; + display: inline-block; + text-transform: none; + vertical-align: middle; + padding: 10px 0 10px 0;*/ + +} +.togetherjs .togetherjs-notification { + position: fixed; + background-color: #ffffff; + color: #000000; + padding: 0 7px 0 7px; + z-index: 10001; + width: 300px; + border-radius: 4px; + background: rgba(242, 242, 242, 0.9); + border: 1px solid #BCBCBC; + -moz-box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.4), inset 0px 3px 1px 0px #ffffff; + -webkit-box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.4), inset 0px 3px 1px 0px #ffffff; + box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.4), inset 0px 3px 1px 0px #ffffff; +} +.togetherjs .togetherjs-notification section { + margin: 15px 7px; +} +.togetherjs .togetherjs-notification > header { + font-weight: bold; + font-variant: normal; + text-align: center; + font-family: openSansRegular, Helvetica; + color: #fff; + margin: 0 -7px 0 -7px; + padding: 10px 4px 5px 30px; + height: 24px; + background: #0095DD; + border-radius: 4px 4px 0 0; + position: relative; + border-bottom: 1px solid #0071A7; +} +.togetherjs .togetherjs-notification .togetherjs-share-link { + width: 256px; + font-size: 12px; + padding: 6px 6px 4px; + border-radius: 4px; + border: 1px solid #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + font-family: Monaco, sans-serif; + margin: 7px 0px; +} +.togetherjs .togetherjs-notification .togetherjs-share-link:focus { + border: 1px solid #0095DD; +} +.togetherjs .togetherjs-notification header button.togetherjs-close { + background-color: inherit; + border: none; + padding: 0; + margin: 0; + border-left: 1px solid #0071A7; + float: right; + font-weight: bold; + cursor: pointer; + background-image: url('./images/icon-close@2x.png'); + background-position: center center; + background-repeat: no-repeat; + background-size: 13px 13px; + width: 39px; + height: 39px; + margin-top: -10px; + margin-right: -4px; + border-top-right-radius: 4px; +} +.togetherjs .togetherjs-notification header button.togetherjs-close:hover { + background-image: url('./images/icon-close-active.png'); + background-color: rgba(0, 0, 0, 0.1); +} +.togetherjs .togetherjs-notification #togetherjs-chat-messages { + overflow-y: auto; + /*FIXME: I'm just pulling numbers out of thin air here:*/ + + /* pgbovine -- make a bit smaller */ + + height: 180px; + /* + height: 260px; + */ + +} +.togetherjs .togetherjs-notification:hover { + background: #f2f2f2; + cursor: pointer; +} +.togetherjs .togetherjs-notification .togetherjs-chat-item { + border-bottom: 0px; + word-wrap: break-word; +} +.togetherjs .togetherjs-notification section#togetherjs-chat-notifier-message { + margin: 0px !important; +} +.togetherjs .togetherjs-notification .togetherjs-chat-content { + font-size: 12px; +} +.togetherjs .togetherjs-notification section { + font-size: 12px; +} +.togetherjs .togetherjs-notification .togetherjs-person-name { + font-family: openSansRegular, Helvetica Bold, 'Helvetica Neue', Arial; + font-size: 14px; +} +.togetherjs .togetherjs-notification button { + min-width: 47% !important; +} +.togetherjs .togetherjs-notification .togetherjs-person { + display: none; +} +.togetherjs .togetherjs-notification .togetherjs-timestamp { + display: none; +} +.togetherjs .togetherjs-notification { + border-bottom: 0px; +} +.togetherjs .togetherjs-notification img.togetherjs-notification-logo { + float: left; + margin: 22px 14px 14px 10px; + width: 34px; + height: 25px; +} +.togetherjs .togetherjs-notification img.togetherjs-notification-closebtn { + float: right; + padding: 14px 7px; +} +.togetherjs .togetherjs-notification img.togetherjs-notification-closebtn:hover { + opacity: 0.5; +} +.togetherjs .togetherjs-notification section.togetherjs-buttons { + border-top: 1px solid #E1E1E1; +} +.togetherjs .togetherjs-person { + height: 36px; + width: 36px; + margin: 10px; + background-repeat: no-repeat; + background-size: 40px 40px; + background-position: -2px -2px; + border: 2px solid; + border-radius: 2px; + background-clip: border-box; +} +.togetherjs .togetherjs-person.togetherjs-person-small { + display: inline-block; + height: 20px; + width: 20px; + margin: -1px -18px; + background-size: 22px 22px; + background-position: -1px -1px; +} +.togetherjs .togetherjs-person-small .togetherjs-person-avatar-swatch { + border-width: 3px; + margin-left: 14px; + margin-top: 0px; +} +.togetherjs .togetherjs-person-avatar-swatch { + /* This is the element that lives inside all .togetherjs-person elements + and is used for the triangle. */ + + width: 0; + height: 0; + margin-left: 23px; + padding: 0; + border-top: 7px solid transparent; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid transparent; + margin-top: 0px; +} +.togetherjs .togetherjs-person-inactive { + opacity: 0.5; +} +.togetherjs .togetherjs-button .togetherjs-person { + margin: 0 0 0 10px; +} +@-moz-document url-prefix() { + /* firefox only styles */ + .togetherjs-button .togetherjs-person { + margin: 10px 0 0 10px; + } +} +.togetherjs header .togetherjs-person { + float: left; +} +.togetherjs .togetherjs-dock-person > .togetherjs-dock-person-tooltip { + display: none; +} +.togetherjs .togetherjs-dock-person:hover > .togetherjs-dock-person-tooltip { + display: block; +} +.togetherjs .togetherjs-dock-person.togetherjs-active:hover > .togetherjs-dock-person-tooltip { + display: none; +} +.togetherjs .togetherjs-dock-person-tooltip { + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial; + position: absolute; + right: 70px; + top: 0px; + padding: 8px; + font-size: 12px; + text-align: left; + min-width: 30px; +} +.togetherjs .togetherjs-tooltip { + background-color: rgba(42, 42, 42, 0.9); + color: #fff; + border-radius: 4px; + line-height: 20px !important; +} +.togetherjs .togetherjs-dock-person-tooltip .togetherjs-person-name { + font-size: 12px; +} +.togetherjs .togetherjs-person-tooltip-arrow-r { + position: absolute; + left: 46px; + width: 0; + height: 0; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + border-left: 4px solid rgba(0, 0, 0, 0.9); + line-height: 20px; + opacity: 0.9; + top: 20px; +} +.togetherjs-triangle-up { + position: absolute; + top: -15px; + width: 13px; + left: 50px; +} +.togetherjs-triangle-up img { + width: 12px; + height: 13px; +} +.togetherjs-rtc-dialog-btn { + text-align: right; +} +#togetherjs-rtc-info section.togetherjs-buttons { + text-align: right !important; +} +#togetherjs-rtc-info label { + font-size: 12px !important; + float: left !important; + padding-top: 13px; + padding-left: 30px; +} +#togetherjs-rtc-info input { + margin-top: 0px !important; +} +.togetherjs-chat-url-change { + background: #f2f2f2; + margin-top: 0px !important; +} +.togetherjs-chat-join-item { + background: #f2f2f2; + margin-top: 0px !important; +} +.togetherjs-chat-left-item { + background: #f2f2f2; + margin-top: 0px !important; +} +.togetherjs-inline-text { + margin-top: 10px !important; +} +.togetherjs-chat-join-item .togetherjs-person { + float: left; + margin-bottom: 0px !important; + margin-top: 0px; +} +.togetherjs-chat-left-item .togetherjs-person { + float: left; + margin-bottom: 0px !important; + margin-top: 0px; +} +.togetherjs-chat-url-change .togetherjs-person { + float: left; + margin-bottom: 0px !important; + margin-top: 0px; +} +.togetherjs-chat-join-item span.togetherjs-person-name { + font-family: openSansRegular, Helvetica; +} +.togetherjs-chat-left-item span.togetherjs-person-name { + font-family: openSansRegular, Helvetica; +} +.togetherjs-chat-url-change span.togetherjs-person-name { + font-family: openSansRegular, Helvetica; +} +.togetherjs-clear { + clear: both; +} +/* Menu */ +#togetherjs-menu { + width: 216px; + position: fixed; + font-size: 14px; + background-color: #fff; + z-index: 10003; + border: 1px solid #979797; + border-radius: 4px; +} +#togetherjs-menu hr { + margin: 0px; + border-top: 0px solid #E1E1E1; +} +#togetherjs-menu .togetherjs-menu-hr-avatar { + margin-top: 20px; + height: 0px; + border-bottom: 1px solid #E1E1E1; + font-size: 1px; +} +#togetherjs-menu .togetherjs-hr { + height: 0px; + margin: 0px; + border-bottom: 1px solid #E1E1E1; + font-size: 1px; +} +#togetherjs-menu .togetherjs-menu-item { + margin: -1px 0px -1px; + padding: 12px; + line-height: 9px; + height: 10px; + clear: both; + cursor: pointer; +} +#togetherjs-menu .togetherjs-menu-item.togetherjs-menu-disabled { + cursor: default; +} +#togetherjs-menu .togetherjs-menu-item.togetherjs-menu-disabled:hover { + background-color: inherit; + border-radius: 4px; + border-top: 1px solid #979797; + padding-top: 11px !important; +} +#togetherjs-menu .togetherjs-menu-item img { + float: left; + height: 20px; + width: 20px; + margin-right: 10px; + margin-top: -5px; +} +#togetherjs-menu .togetherjs-menu-item:hover { + background-color: rgba(216, 216, 216, 0.5); +} +#togetherjs-menu .togetherjs-menu-item .togetherjs-avatar { + height: 20px; + width: 20px; + padding: 0; + margin: 0 10px 0 0; +} +#togetherjs-menu .togetherjs-menu-item .togetherjs-person-bgcolor-self { + display: inline-block; + width: 12px; + height: 12px; + border: 1px solid #999; + border-radius: 2px; + margin-right: 12px; + float: left; + margin-top: -2px; + margin-left: 4px; +} +#togetherjs-menu #togetherjs-menu-help { + padding-left: 15px; +} +#togetherjs-menu #togetherjs-menu-feedback { + padding-left: 15px; +} +#togetherjs-menu img#togetherjs-menu-avatar { + float: left; + padding-top: 8px; +} +#togetherjs-menu .togetherjs-person-name-self { + padding-top: 8px; + line-height: 32px; + font-weight: bold; +} +#togetherjs-menu .togetherjs-self-name { + width: 146px !important; + float: right; + margin-top: -23px; + font-size: 12px; + padding: 7px 7px; + border-radius: 4px; + border: 1px solid #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + margin: -2px 0px; +} +#togetherjs-menu .togetherjs-self-name:focus { + border: 1px solid #0095DD; +} +#togetherjs-menu .togetherjs-self-name:focus { + border-bottom: 1px solid #0095DD; +} +/*Participant windows*/ +#togetherjs-participantlist.togetherjs-window { + padding: -1px; +} +#togetherjs-participantlist.togetherjs-window section { + overflow: scroll; + height: 200px; + margin: 0px -7px; +} +#togetherjs-participantlist section.togetherjs-buttons { + height: auto; + background: none; + text-align: left; + margin: auto; + padding-top: 0px; +} +#togetherjs-participantlist .togetherjs-person.togetherjs-person-small { + margin: 0px; + width: 30px; + height: 30px; +} +#togetherjs-participantlist.togetherjs-window section ul li { + padding: 10px; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); +} +#togetherjs-participantlist.togetherjs-window .tj-name { + padding-left: 5px; +} +#togetherjs-participantlist.togetherjs-window .tj-status { + float: right; + margin-top: 6px; + margin-right: 10px; + font-size: 24px; + color: green; +} +#togetherjs-participantlist.togetherjs-window .tj-urllocation { + font-size: 12px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +#togetherjs-participantlist .togetherjs-follow-question { + margin-left: 0px; +} +#togetherjs-participantlist.togetherjs-window .tj-follow { + font-size: 12px; +} +#togetherjs-participantlist.togetherjs-window .tj-btn-sm { + height: 30px; + line-height: 30px; + font-size: 12px; + margin: 0px 3px 0px 0px; +} +section.togetherjs-participant-window-main { + margin: 0px -7px -7px !important; +} +.togetherjs-participant-window-row a.togetherjs-person-url { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 179px; + display: inline-block; +} +.togetherjs p.togetherjs-participant-window-row { + border-bottom: 1px solid #E1E1E1 !important; + padding: 7px 14px 14px !important; +} +.togetherjs-participant-window-row strong { + font-weight: 800; +} +.togetherjs-follow-question { + margin-left: 10px; +} +.togetherjs-float-left { + float: left; +} +.togetherjs-window input[type="radio"], +.togetherjs-window input[type="checkbox"] { + margin: 0 0 0 !important; +} +.togetherjs-clear { + clear: both; + margin: 10px; +} +section.togetherjs-buttons { + background: #F3F2F2; + margin: 0px -7px !important; + padding: 7px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + text-align: right; +} +section.togetherjs-buttons.togetherjs-buttons-notification-diff-url { + margin: 7px -7px 0px !important; + padding: 7px 3px 0px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + width: 300px; + text-align: right; +} +.togetherjs-notification-diff-url { + width: 288px !important; + margin: 0px 7px !important; +} +.togetherjs-different-url button { + min-width: 47% !important; +} +/*.togetherjs-different-url { + text-align:right; +}*/ +.togetherjs-same-url { + padding-left: 7px !important; + opacity: .5 !important; + padding-top: 7px !important; + padding-bottom: 7px !important; +} +section.togetherjs-buttons .togetherjs-same-url { + text-align: left; +} +/* Button set */ +#togetherjs-dock { + position: fixed; + z-index: 10000; + background-color: #0095dd; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); + /*border:1px solid #000;*/ + +} +#togetherjs-dock.togetherjs-dock-right { + padding: 0; + bottom: 50px; + right: 5px; + border-radius: 4px; + height: 260px; + width: 60px; +} +#togetherjs-dock.togetherjs-dock-right #togetherjs-dock-anchor-vertical { + display: none; +} +#togetherjs-dock.togetherjs-dock-right #togetherjs-dock-anchor-horizontal { + display: inline; +} +#togetherjs-dock.togetherjs-dock-right #togetherjs-dock-anchor-horizontal img { + width: 31px; + height: 7px; + padding: 0px 2px 2px 2px; + pointer-events: none; +} +#togetherjs-dock.togetherjs-dock-left { + padding: 0; + bottom: 60px; + left: 5px; + border-radius: 0 4px 4px 0; + height: 214px; + width: 60px; +} +#togetherjs-dock.togetherjs-dock-left #togetherjs-dock-anchor-vertical { + display: none; +} +#togetherjs-dock.togetherjs-dock-left #togetherjs-dock-anchor-horizontal { + display: inline; +} +#togetherjs-dock.togetherjs-dock-left #togetherjs-dock-anchor-horizontal img { + width: 6px; + height: 6px; + padding: 7px 2px 2px 2px; +} +#togetherjs-dock.togetherjs-dock-top { + padding: 0; + top: 40px; + left: 50%; + margin-left: -130px; + border-radius: 4px 4px 0 0; + height: 60px; + width: 260px; +} +#togetherjs-dock.togetherjs-dock-top #togetherjs-buttons, +#togetherjs-dock.togetherjs-dock-top #togetherjs-dock-anchor { + display: inline; +} +#togetherjs-dock.togetherjs-dock-top #togetherjs-dock-anchor-vertical { + display: inline; +} +#togetherjs-dock.togetherjs-dock-top #togetherjs-dock-anchor-horizontal { + display: none; +} +#togetherjs-dock.togetherjs-dock-top #togetherjs-dock-anchor-vertical img { + width: 6px; + height: 6px; + padding: 2px; +} +/* Arrows for pointing */ +.togetherjs-arrow { + position: absolute; + border: 2px solid #f00; + z-index: 10010; + padding: 0; + margin: 0; + -moz-transform-origin: top left; + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + -o-transform-origin: top left; + transform-origin: top left; +} +.togetherjs-chat-message.togetherjs-arrow-message { + border: 2px solid #f00; +} +/* Shared cursors */ +.togetherjs-cursor svg { + -webkit-filter: drop-shadow(1px 3px 2px rgba(0, 0, 0, 0.3)); + -webkit-transform: rotate(-10deg); +} +.togetherjs-cursor-img { + position: relative; + top: 0; +} +.togetherjs-cursor img { + width: 20px; + -webkit-filter: drop-shadow(0px 2px 1px rgba(0, 0, 0, 0.2)); + /*FIX ME, moz filter not working...*/ + + -moz-filter: drop-shadow(0px 2px 1px rgba(0, 0, 0, 0.2)); + filter: drop-shadow(0px 2px 1px rgba(0, 0, 0, 0.2)); +} +.togetherjs-cursor { + position: absolute; + z-index: 9999; + font-size: 28px; + font-weight: bolder; + /* This magic CSS rule makes this element basically invisible to clicks/etc: + (good on all but IE: http://caniuse.com/pointer-events */ + + pointer-events: none; + /*FIXME: maybe these should use position: fixed so the cursor + stays stuck to the top of the screen until the appropriate time + (when .togetherjs-scrolled-above/below is removed)?*/ + +} +.togetherjs-cursor:hover { + cursor: pointer; +} +.togetherjs-cursor.togetherjs-scrolled-above { + position: fixed; +} +.togetherjs-cursor.togetherjs-scrolled-above svg { + -webkit-transition-duration: 0.8s; + -webkit-transition-property: -webkit-transform; + -webkit-transform: rotate(20deg); + transition-duration: 0.8s; + transition-property: transform; + transform: rotate(20deg); +} +.togetherjs-cursor.togetherjs-scrolled-above .togetherjs-cursor-down { + display: none; +} +.togetherjs-cursor.togetherjs-scrolled-below { + position: fixed; +} +.togetherjs-cursor.togetherjs-scrolled-below svg { + -webkit-transition-duration: 0.8s; + -webkit-transition-property: -webkit-transform; + -webkit-transform: rotate(-150deg); + transition-duration: 0.8s; + transition-property: transform; + transform: rotate(-150deg); +} +.togetherjs-cursor.togetherjs-scrolled-below .togetherjs-cursor-up { + display: none; +} +.togetherjs-cursor.togetherjs-scrolled-normal svg { + -webkit-transition-duration: 0.8s; + -webkit-transition-property: -webkit-transform; + -webkit-transform: rotate(-10deg); + transition-duration: 0.8s; + transition-property: transform; + transform: rotate(-10deg); +} +.togetherjs-cursor.togetherjs-scrolled-normal .togetherjs-cursor-up, +.togetherjs-cursor.togetherjs-scrolled-normal .togetherjs-cursor-down { + display: none; +} +.togetherjs-cursor .togetherjs-cursor-container { + opacity: 0.9; + white-space: nowrap; + font-family: openSansLight, Helvetica, 'Helvetica Neue', Arial, sans-serif; + font-size: 40%; + position: relative; + top: 5px; + left: 15px; + padding: 8px; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + border: 1px solid rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); +} +.togetherjs-click { + position: absolute; + z-index: 9998; + pointer-events: none; + width: 10px; + height: 10px; + margin: -5px 0 0 -5px; + border-radius: 5px; + border: 3px solid #ff3a29; + /* Note, you must call this like: + .transition(~"value, value, value")*/ + + transition: width 2s, height 2s, margin 2s, border 2s; + -moz-transition: width 2s, height 2s, margin 2s, border 2s; + -webkit-transition: width 2s, height 2s, margin 2s, border 2s; + -o-transition: width 2s, height 2s, margin 2s, border 2s; +} +.togetherjs-click.togetherjs-clicking { + width: 40px; + height: 40px; + margin: -20px 0 0 -20px; + border-radius: 20px; + border: 3px solid rgba(0, 0, 0, 0); +} +#togetherjs-starter .togetherjs-running { + background-color: #f00; + color: #fff; + border-radius: 4px; + border: 3px outset #d00; + /*FIXME: add gradient*/ + +} +/* Modals */ +#togetherjs-modal-background { + position: fixed; + background-color: #000; + opacity: 0.5; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 10002; +} +.togetherjs .togetherjs-modal { + background-color: #ffffff; + color: #000000; + padding: 0 7px 0 7px; + z-index: 10001; + width: 286px; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); + border-radius: 5px !important; + position: fixed; + z-index: 10003; + top: 50%; + left: 50%; + margin-left: -150px; + width: 300px; + margin-top: -10em; +} +.togetherjs .togetherjs-modal section { + margin: 15px 7px; +} +.togetherjs .togetherjs-modal > header { + font-weight: bold; + font-variant: normal; + text-align: center; + font-family: openSansRegular, Helvetica; + color: #fff; + margin: 0 -7px 0 -7px; + padding: 10px 4px 5px 30px; + height: 24px; + background: #0095DD; + border-radius: 4px 4px 0 0; + position: relative; + border-bottom: 1px solid #0071A7; +} +.togetherjs .togetherjs-modal .togetherjs-share-link { + width: 256px; + font-size: 12px; + padding: 6px 6px 4px; + border-radius: 4px; + border: 1px solid #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + font-family: Monaco, sans-serif; + margin: 7px 0px; +} +.togetherjs .togetherjs-modal .togetherjs-share-link:focus { + border: 1px solid #0095DD; +} +.togetherjs .togetherjs-modal header button.togetherjs-close { + background-color: inherit; + border: none; + padding: 0; + margin: 0; + border-left: 1px solid #0071A7; + float: right; + font-weight: bold; + cursor: pointer; + background-image: url('./images/icon-close@2x.png'); + background-position: center center; + background-repeat: no-repeat; + background-size: 13px 13px; + width: 39px; + height: 39px; + margin-top: -10px; + margin-right: -4px; + border-top-right-radius: 4px; +} +.togetherjs .togetherjs-modal header button.togetherjs-close:hover { + background-image: url('./images/icon-close-active.png'); + background-color: rgba(0, 0, 0, 0.1); +} +.togetherjs .togetherjs-modal #togetherjs-chat-messages { + overflow-y: auto; + /*FIXME: I'm just pulling numbers out of thin air here:*/ + + /* pgbovine -- make a bit smaller */ + + height: 180px; + /* + height: 260px; + */ + +} +.togetherjs .togetherjs-modal.togetherjs-modal-wide { + width: 550px; + margin-left: -284px; + height: 530px; + margin-top: -275px; +} +.togetherjs .togetherjs-modal section.togetherjs-buttons { + /*position: absolute;*/ + + bottom: 0; + background: #F2F2F2; + width: 294px; + padding: 10px; + text-align: right; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + margin-left: -7px; + margin-bottom: 0px; + border-top: 1px solid #E1E1E1; +} +.togetherjs .togetherjs-modal-wide section.togetherjs-buttons { + width: 544px; + text-align: center !important; + position: absolute; +} +.togetherjs .togetherjs-walkthrough-slide { + padding: 0 30px 0 30px; + text-align: center; +} +.togetherjs .togetherjs-walkthrough-slide p { + margin: 18px auto; + width: 400px; +} +.togetherjs .togetherjs-walkthrough-slide iframe { + border-radius: 4px; +} +.togetherjs section.togetherjs-walkthrough-slide .togetherjs-walkthrough-main-image .togetherjs-walkthrough-avatar-section { + margin-top: 115px; +} +.togetherjs .togetherjs-avatar-preview { + float: left; + margin-left: 82px; +} +.togetherjs .togetherjs-avatar-upload-input { + float: right; + margin-right: 82px; + margin-top: 19px; +} +.togetherjs .togetherjs-save-settings { + margin-top: 239px; +} +.togetherjs section.togetherjs-walkthrough-slide .togetherjs-walkthrough-avatar { + width: 80px; + height: 80px; + position: absolute; + left: 44%; + top: 30%; + border-radius: 4px 4px 4px 4px; + border: 2px solid #cccccc; + background: none repeat scroll 0% 0% #000000; +} +.togetherjs section.togetherjs-walkthrough-slide .togetherjs-walkthrough-avatar:hover { + cursor: pointer; + border: 2px solid #cccccc; +} +.togetherjs section.togetherjs-walkthrough-slide input.togetherjs-self-name { + position: absolute; + top: 50%; + left: 29%; + font-size: 14px; + padding: 6px 6px 6px; + border-radius: 4px 4px 4px 4px; + border: 1px solid #cccccc; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1) inset; + font-family: openSansRegular, Helvetica, sans-serif; + margin: -20px 0px; +} +.togetherjs section.togetherjs-walkthrough-slide .togetherjs-swatch { + width: 32px; + height: 32px; + background: none repeat scroll 0% 0% #000000; + position: absolute; + top: 46.2%; + right: 29%; + border-radius: 4px 4px 4px 4px; + border: 1px solid #cccccc; +} +.togetherjs section.togetherjs-walkthrough-slide .togetherjs-swatch:hover { + cursor: pointer; + border: 1px solid rgba(204, 204, 204, 0.2); +} +.togetherjs section.togetherjs-walkthrough-slide span.togetherjs-walkthrough-sendlink { + top: 44%; + position: relative; +} +.togetherjs section.togetherjs-walkthrough-slide input.togetherjs-share-link { + top: 44%; + position: relative; +} +.togetherjs .togetherjs-walkthrough-main-image { + width: 400px; + height: 300px; + background: rgba(216, 216, 216, 0.1); + border-radius: 4px; + border: 1px solid rgba(151, 151, 151, 0.1); + margin: 0 auto; +} +.togetherjs .togetherjs-walkthrough-main-image img { + width: 400px; + height: 300px; +} +.togetherjs #togetherjs-walkthrough input, +.togetherjs textarea, +.togetherjs .uneditable-input { + width: 177px; +} +.togetherjs #togetherjs-walkthrough select, +.togetherjs input[type="file"] { + height: 30px; + line-height: 0px; +} +.togetherjs #togetherjs-walkthrough-previous { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-left: 36px; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-l.png'); + float: left; +} +.togetherjs #togetherjs-walkthrough-previous.togetherjs-disabled { + cursor: default; + opacity: 0.2; +} +.togetherjs #togetherjs-walkthrough-previous:hover { + background-image: url('./images/icn-walkthrough-arrow-l-hover.png'); +} +.togetherjs #togetherjs-walkthrough-next { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-right: 28px; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-r.png'); + float: right; +} +.togetherjs #togetherjs-walkthrough-next.togetherjs-disabled { + cursor: default; + opacity: 0.2; +} +.togetherjs #togetherjs-walkthrough-next:hover { + background-image: url('./images/icn-walkthrough-arrow-r-hover.png'); +} +.togetherjs #togetherjs-walkthrough-progress { + width: 537px; + position: absolute; + bottom: 66px; + text-align: center; +} +.togetherjs .togetherjs-walkthrough-slide-progress { + cursor: pointer; + padding: 0 5px 0 5px; + color: #D8D8D8; + font-size: 20px; +} +.togetherjs .togetherjs-walkthrough-slide-progress.togetherjs-active { + color: #9C9C9C; +} +.togetherjs .togetherjs-walkthrough-slide-progress:hover { + color: #9C9C9C; +} +/* Animations */ +/* Inspired by https://github.com/daneden/animate.css */ +@-webkit-keyframes togetherjs-pulse { + 0% { + -webkit-transform: scale(1); + } + 50% { + -webkit-transform: scale(1.1); + } + 100% { + -webkit-transform: scale(1); + } +} +@-moz-keyframes togetherjs-pulse { + 0% { + -moz-transform: scale(1); + } + 50% { + -moz-transform: scale(1.1); + } + 100% { + -moz-transform: scale(1); + } +} +@-o-keyframes togetherjs-pulse { + 0% { + -o-transform: scale(1); + } + 50% { + -o-transform: scale(1.1); + } + 100% { + -o-transform: scale(1); + } +} +@keyframes togetherjs-pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } + 100% { + transform: scale(1); + } +} +.togetherjs-pulse { + -webkit-animation-name: togetherjs-pulse; + -moz-animation-name: togetherjs-pulse; + -o-animation-name: togetherjs-pulse; + animation-name: togetherjs-pulse; +} +.togetherjs-animated { + -webkit-animation-duration: 1s; + -moz-animation-duration: 1s; + -o-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + -moz-animation-fill-mode: both; + -o-animation-fill-mode: both; + animation-fill-mode: both; +} +@-webkit-keyframes togetherjs-color-pulse { + 0% { + box-shadow: none; + } + 50% { + box-shadow: inset 0 0 2px #0095dd; + } + 100% { + box-shadow: none; + } +} +@-moz-keyframes togetherjs-color-pulse { + 0% { + box-shadow: none; + } + 50% { + box-shadow: inset 0 0 2px #0095dd; + } + 100% { + box-shadow: none; + } +} +@-o-keyframes togetherjs-color-pulse { + 0% { + box-shadow: none; + } + 50% { + box-shadow: inset 0 0 2px #0095dd; + } + 100% { + box-shadow: none; + } +} +@keyframes togetherjs-color-pulse { + 0% { + box-shadow: none; + } + 50% { + box-shadow: inset 0 0 2px #0095dd; + } + 100% { + box-shadow: none; + } +} +.togetherjs-color-pulse { + -webkit-animation-name: togetherjs-color-pulse; + -moz-animation-name: togetherjs-color-pulse; + -o-animation-name: togetherjs-color-pulse; + animation-name: togetherjs-color-pulse; +} +@-webkit-keyframes togetherjs-color-alert { + 0% { + box-shadow: none; + } + 50% { + box-shadow: 0 0 5px #0095dd; + } + 100% { + box-shadow: none; + } +} +@-moz-keyframes togetherjs-color-alert { + 0% { + box-shadow: none; + } + 50% { + box-shadow: 0 0 5px #0095dd; + } + 100% { + box-shadow: none; + } +} +@-o-keyframes togetherjs-color-alert { + 0% { + box-shadow: none; + } + 50% { + box-shadow: 0 0 5px #0095dd; + } + 100% { + box-shadow: none; + } +} +@keyframes togetherjs-color-alert { + 0% { + box-shadow: none; + } + 50% { + box-shadow: 0 0 5px #0095dd; + } + 100% { + box-shadow: none; + } +} +.togetherjs-color-alert { + -webkit-animation-name: togetherjs-color-alert; + -moz-animation-name: togetherjs-color-alert; + -o-animation-name: togetherjs-color-alert; + animation-name: togetherjs-color-alert; + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + -moz-animation-iteration-count: infinite; + -o-animation-iteration-count: infinite; +} +#togetherjs-profile-arrow { + position: absolute; + width: 12px; + height: 12px; + left: 42px; + top: 46px; + background: url('./images/icn-gear.png'); + background-size: 12px 12px; + background-repeat: no-repeat; +} +#togetherjs-pick-color { + width: 100px; + height: 76px; + margin-left: -35px; + position: absolute; + margin-top: 25px; + background-color: #fff; + z-index: 10004; + border: 1px solid #979797; + border-radius: 4px; + padding: 5px; +} +#togetherjs-pick-color .togetherjs-swatch { + cursor: pointer; + display: inline-block; + height: 12px; + width: 12px; + border: 1px solid; + border-radius: 1px; + margin: 4px; +} +#togetherjs-pick-color .togetherjs-swatch.togetherjs-swatch-active { + border: 3px solid; + border-radius: 3px; +} +#togetherjs-pick-color .togetherjs-swatch:hover { + border: 2px solid rgba(0, 0, 0, 0.5); + height: 10px; + width: 10px; + border-radius: 3px; +} +.togetherjs-focus { + position: absolute; + pointer-events: none; + z-index: 9999; + opacity: 0.4; + border: 3px solid; + margin: -3px; +} +.togetherjs-only-mobile { + display: none; +} +@media screen and (max-device-width: 480px) { + { + /*TogetherJS dock*/ + + /*TogetherJS walkthrough*/ + + } + #togetherjs-dock.togetherjs-dock-right { + top: 0px; + width: auto; + height: 40px !important; + right: 0px; + margin: 10px; + bottom: 0px; + } + #togetherjs-dock #togetherjs-dock-anchor { + width: 40px; + height: 40px; + float: right; + user-select: all; + cursor: default; + display: inline; + } + #togetherjs-dock #togetherjs-buttons { + display: inline; + } + #togetherjs-dock .togetherjs-button { + float: right; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-top: none; + width: 40px; + height: 40px; + background-size: 30px 30px; + } + #togetherjs-dock #togetherjs-profile-arrow { + display: none; + } + #togetherjs-dock #togetherjs-dock-anchor-horizontal img { + width: 24px; + height: 24px; + padding: 8px; + } + .togetherjs-only-mobile { + display: block; + text-align: center; + /* a.togetherjs-share-link { + padding: 6px 111px 6px; + }*/ + + } + .togetherjs-not-mobile { + display: none; + } + .togetherjs .togetherjs-menu-item { + cursor: pointer; + margin: 0px -14px 0px; + padding: 9px; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + } + .togetherjs #togetherjs-menu-feedback-button, + .togetherjs #togetherjs-menu-update-color-button, + .togetherjs #togetherjs-menu-help-button { + display: none; + } + .togetherjs .togetherjs-menu-item img { + display: none; + } + .togetherjs .togetherjs-menu-item:first-child { + display: none; + } + .togetherjs .togetherjs-button .togetherjs-person { + margin: 0 0 0 5px; + } + .togetherjs .togetherjs-person { + background-size: 30px 30px; + height: 26px; + width: 26px; + } + .togetherjs .togetherjs-person-avatar-swatch { + margin-left: 12px; + } + .togetherjs .togetherjs-window { + width: 100%; + margin-left: 0; + height: 82%; + margin-top: 0%; + z-index: 10003 !important; + top: 20%; + left: -2px; + } + .togetherjs .togetherjs-window #togetherjs-chat-messages { + width: 105%; + } + .togetherjs .togetherjs-window .togetherjs-close { + display: none; + } + .togetherjs .togetherjs-window #togetherjs-chat-messages { + height: 62%; + top: -37px; + } + .togetherjs .togetherjs-subtitle { + width: 98%; + margin: 22px 7px; + } + .togetherjs #togetherjs-chat-input-box { + width: 100%; + bottom: 0px; + position: fixed; + } + .togetherjs #togetherjs-chat-input { + width: 95%; + } + .togetherjs .togetherjs-timestamp { + padding: 8px 45px 0px 10px; + } + .togetherjs #togetherjs-rtc-not-supported section.togetherjs-buttons { + display: none; + } + .togetherjs #togetherjs-menu-window section.togetherjs-buttons { + display: none; + } + .togetherjs .togetherjs-modal { + width: 94%; + margin-left: 1%; + height: 94%; + margin-top: 1%; + top: 0; + left: 0; + } + .togetherjs .togetherjs-window > header { + margin: -7px; + padding: 10px; + } + #togetherjs-dock-participants { + display: none; + } + #togetherjs-confirm-end section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 92%; + } + #togetherjs-edit-name-window section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 96%; + } + input.togetherjs-self-name { + padding: 10px; + width: 92%; + margin-top: 10px; + } + #togetherjs-avatar-edit section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 92%; + } + #togetherjs-avatar-edit .togetherjs-person { + margin: 30px auto; + float: none; + } + #togetherjs-avatar-edit #togetherjs-avatar-buttons { + float: none; + margin: 0 auto; + } + #togetherjs-window-pointer-right, + #togetherjs-window-pointer-left { + position: fixed; + width: 10px; + height: 10px; + margin-right: -5px; + margin-top: -5px; + background: #fff; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + z-index: 10002; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + } + #togetherjs-window-pointer-right { + -moz-transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + #togetherjs-window-pointer-left { + -moz-transform: rotate(135deg); + -webkit-transform: rotate(135deg); + } + .togetherjs .togetherjs-modal section { + margin: 0px 7px; + } + #togetherjs-walkthrough-progress { + width: 93%; + text-align: center; + position: static; + } + .togetherjs-modal-wide section.togetherjs-buttons { + width: 93.9%; + text-align: center !important; + position: absolute; + bottom: -17px; + } + .togetherjs-walkthrough-slide p { + margin: 13px auto; + width: 100%; + font-size: 11px; + } + .togetherjs .togetherjs-walkthrough-main-image { + width: auto; + height: auto; + background: rgba(216, 216, 216, 0.1); + border-radius: 4px; + border: 1px solid rgba(151, 151, 151, 0.1); + padding: 10px; + } + .togetherjs .togetherjs-walkthrough-main-image img { + width: 50%; + height: auto; + } + .togetherjs #togetherjs-walkthrough-next { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-right: 0px; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-r.png'); + float: right; + } + .togetherjs #togetherjs-walkthrough-previous { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-l.png'); + float: left; + margin-left: 0px; + } + .togetherjs .togetherjs-modal .togetherjs-share-link { + width: 80%; + font-size: 14px; + padding: 14px; + border-radius: 4px; + border: 1px solid + #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + font-family: Monaco; + margin: 7px 0px; + } + .togetherjs-walkthrough-sendlink { + top: 44%; + position: relative; + padding: 15px; + } + .togetherjs section.togetherjs-walkthrough-slide input.togetherjs-self-name { + position: absolute; + top: 50%; + left: 29%; + font-size: 14px; + padding: 6px 6px 6px; + border-radius: 4px 4px 4px 4px; + border: 1px solid + #cccccc; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1) inset; + font-family: openSansRegular; + margin: -20px 11px; + width: 60%; + } + .togetherjs section.togetherjs-walkthrough-slide .togetherjs-walkthrough-main-image .togetherjs-walkthrough-avatar-section { + margin-top: 15px; + } + .togetherjs .togetherjs-avatar-preview { + margin: 0 auto; + float: none; + } + .togetherjs .togetherjs-avatar-upload-input { + margin: 10px auto; + float: none; + } + .togetherjs .togetherjs-avatar-upload-input input { + width: 60%; + } + input.togetherjs-upload-avatar { + line-height: 0px; + width: 174px; + margin-left: 0px; + } + .togetherjs section.togetherjs-walkthrough-slide input.togetherjs-self-name { + float: left; + font-size: 14px; + padding: 6px 6px 6px; + border-radius: 4px 4px 4px 4px; + border: 1px solid + #cccccc; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1) inset; + font-family: openSansRegular; + width: 66%; + position: static; + margin: 10px 10px; + } + .togetherjs section.togetherjs-walkthrough-slide .togetherjs-swatch { + width: 32px; + height: 32px; + background: none repeat scroll 0% 0% + #000000; + position: relative; + float: right; + right: 10px; + border-radius: 4px 4px 4px 4px; + border: 1px solid #cccccc; + top: 10px; + } + .togetherjs .togetherjs-save-settings { + margin-top: 20px; + margin-bottom: 0px; + } +} +@media screen and (max-device-width: 480px) and (min-width: 480px) { + { + /* #togetherjs-dock.togetherjs-dock-right { + width: 27% !important; + }*/ + + } + .togetherjs-mobile-browser input.togetherjs-self-name { + width: 95%; + margin-top: 10px; + } + .togetherjs .togetherjs-window { + width: 100%; + left: -2px !important; + top: 50%; + } + .togetherjs-mobile-browser #togetherjs-edit-name-window section.togetherjs-buttons { + width: 99%; + } + #togetherjs-confirm-end section.togetherjs-buttons { + width: 96.6%; + position: absolute; + bottom: 0; + } + #togetherjs-edit-name-window section.togetherjs-buttons { + width: 99%; + } + input.togetherjs-self-name { + width: 94%; + margin-top: 10px; + } + #togetherjs-avatar-edit section.togetherjs-buttons { + width: 95.3%; + bottom: 0; + background: #F2F2F2; + padding: 10px; + text-align: right; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + border-top: 1px solid #E1E1E1; + position: absolute; + } + .togetherjs-modal { + width: 74% !important; + height: 50% !important; + margin: 20% 12% !important; + } + .togetherjs-mobile-browser .togetherjs .togetherjs-modal { + width: 76% !important; + margin-left: 1%; + height: 94%; + margin-top: 1%; + top: 0; + left: 0; + height: 41%; + margin: 20% 11%; + } + .togetherjs-modal-wide section.togetherjs-buttons { + width: 97.4% !important; + } +} +@media screen and (max-device-width: 480px) and (max-width: 480px) { + .togetherjs .togetherjs-window { + width: 96%; + margin-left: 0; + height: 82%; + margin-top: 0%; + z-index: 10003 !important; + top: 20%; + left: -2px; + } + .togetherjs .togetherjs-window #togetherjs-chat-messages { + width: 105%; + } + .togetherjs .togetherjs-window .togetherjs-close { + display: none; + } + .togetherjs .togetherjs-window #togetherjs-chat-messages { + height: 62%; + top: -37px; + } + #togetherjs-chat-input-box { + width: 94% !important; + bottom: 0px; + position: fixed; + } + .togetherjs-timestamp { + padding: 8px 15px 0px 10px !important; + } + input[type='text'], + input[type='number'], + textarea { + font-size: 16px !important; + } +} +/* We set this class on the element when that last media query won't work + but we detect in Javascript that the client should be treated as mobile */ +.togetherjs-mobile-browser { + /*TogetherJS dock*/ + + /*TogetherJS walkthrough*/ + +} +.togetherjs-mobile-browser #togetherjs-dock.togetherjs-dock-right { + top: 0px; + width: auto; + height: 40px !important; + right: 0px; + margin: 10px; + bottom: 0px; +} +.togetherjs-mobile-browser #togetherjs-dock #togetherjs-dock-anchor { + width: 40px; + height: 40px; + float: right; + user-select: all; + cursor: default; + display: inline; +} +.togetherjs-mobile-browser #togetherjs-dock #togetherjs-buttons { + display: inline; +} +.togetherjs-mobile-browser #togetherjs-dock .togetherjs-button { + float: right; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-top: none; + width: 40px; + height: 40px; + background-size: 30px 30px; +} +.togetherjs-mobile-browser #togetherjs-dock #togetherjs-profile-arrow { + display: none; +} +.togetherjs-mobile-browser #togetherjs-dock #togetherjs-dock-anchor-horizontal img { + width: 24px; + height: 24px; + padding: 8px; +} +.togetherjs-mobile-browser .togetherjs-only-mobile { + display: block; + text-align: center; + /* a.togetherjs-share-link { + padding: 6px 111px 6px; + }*/ + +} +.togetherjs-mobile-browser .togetherjs-not-mobile { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-menu-item { + cursor: pointer; + margin: 0px -14px 0px; + padding: 9px; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); +} +.togetherjs-mobile-browser .togetherjs #togetherjs-menu-feedback-button, +.togetherjs-mobile-browser .togetherjs #togetherjs-menu-update-color-button, +.togetherjs-mobile-browser .togetherjs #togetherjs-menu-help-button { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-menu-item img { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-menu-item:first-child { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-button .togetherjs-person { + margin: 0 0 0 5px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-person { + background-size: 30px 30px; + height: 26px; + width: 26px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-person-avatar-swatch { + margin-left: 12px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-window { + width: 100%; + margin-left: 0; + height: 82%; + margin-top: 0%; + z-index: 10003 !important; + top: 20%; + left: -2px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-window #togetherjs-chat-messages { + width: 105%; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-window .togetherjs-close { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-window #togetherjs-chat-messages { + height: 62%; + top: -37px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-subtitle { + width: 98%; + margin: 22px 7px; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-chat-input-box { + width: 100%; + bottom: 0px; + position: fixed; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-chat-input { + width: 95%; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-timestamp { + padding: 8px 45px 0px 10px; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-rtc-not-supported section.togetherjs-buttons { + display: none; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-menu-window section.togetherjs-buttons { + display: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-modal { + width: 94%; + margin-left: 1%; + height: 94%; + margin-top: 1%; + top: 0; + left: 0; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-window > header { + margin: -7px; + padding: 10px; +} +.togetherjs-mobile-browser #togetherjs-dock-participants { + display: none; +} +.togetherjs-mobile-browser #togetherjs-confirm-end section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 92%; +} +.togetherjs-mobile-browser #togetherjs-edit-name-window section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 96%; +} +.togetherjs-mobile-browser input.togetherjs-self-name { + padding: 10px; + width: 92%; + margin-top: 10px; +} +.togetherjs-mobile-browser #togetherjs-avatar-edit section.togetherjs-buttons { + position: fixed; + bottom: 0; + width: 92%; +} +.togetherjs-mobile-browser #togetherjs-avatar-edit .togetherjs-person { + margin: 30px auto; + float: none; +} +.togetherjs-mobile-browser #togetherjs-avatar-edit #togetherjs-avatar-buttons { + float: none; + margin: 0 auto; +} +.togetherjs-mobile-browser #togetherjs-window-pointer-right, +.togetherjs-mobile-browser #togetherjs-window-pointer-left { + position: fixed; + width: 10px; + height: 10px; + margin-right: -5px; + margin-top: -5px; + background: #fff; + border-right: 1px solid rgba(0, 0, 0, 0.2); + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + z-index: 10002; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); +} +.togetherjs-mobile-browser #togetherjs-window-pointer-right { + -moz-transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} +.togetherjs-mobile-browser #togetherjs-window-pointer-left { + -moz-transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} +.togetherjs-mobile-browser .togetherjs .togetherjs-modal section { + margin: 0px 7px; +} +.togetherjs-mobile-browser #togetherjs-walkthrough-progress { + width: 93%; + text-align: center; + position: static; +} +.togetherjs-mobile-browser .togetherjs-modal-wide section.togetherjs-buttons { + width: 93.9%; + text-align: center !important; + position: absolute; + bottom: -17px; +} +.togetherjs-mobile-browser .togetherjs-walkthrough-slide p { + margin: 13px auto; + width: 100%; + font-size: 11px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-walkthrough-main-image { + width: auto; + height: auto; + background: rgba(216, 216, 216, 0.1); + border-radius: 4px; + border: 1px solid rgba(151, 151, 151, 0.1); + padding: 10px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-walkthrough-main-image img { + width: 50%; + height: auto; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-walkthrough-next { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-right: 0px; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-r.png'); + float: right; +} +.togetherjs-mobile-browser .togetherjs #togetherjs-walkthrough-previous { + cursor: pointer; + width: 19px; + height: 36px; + background-repeat: no-repeat; + background-size: 60% 60%; + margin-top: 28%; + background-image: url('./images/icn-walkthrough-arrow-l.png'); + float: left; + margin-left: 0px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-modal .togetherjs-share-link { + width: 80%; + font-size: 14px; + padding: 14px; + border-radius: 4px; + border: 1px solid + #cccccc; + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.1); + font-family: Monaco; + margin: 7px 0px; +} +.togetherjs-mobile-browser .togetherjs-walkthrough-sendlink { + top: 44%; + position: relative; + padding: 15px; +} +.togetherjs-mobile-browser .togetherjs section.togetherjs-walkthrough-slide input.togetherjs-self-name { + position: absolute; + top: 50%; + left: 29%; + font-size: 14px; + padding: 6px 6px 6px; + border-radius: 4px 4px 4px 4px; + border: 1px solid + #cccccc; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1) inset; + font-family: openSansRegular; + margin: -20px 11px; + width: 60%; +} +.togetherjs-mobile-browser .togetherjs section.togetherjs-walkthrough-slide .togetherjs-walkthrough-main-image .togetherjs-walkthrough-avatar-section { + margin-top: 15px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-avatar-preview { + margin: 0 auto; + float: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-avatar-upload-input { + margin: 10px auto; + float: none; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-avatar-upload-input input { + width: 60%; +} +.togetherjs-mobile-browser input.togetherjs-upload-avatar { + line-height: 0px; + width: 174px; + margin-left: 0px; +} +.togetherjs-mobile-browser .togetherjs section.togetherjs-walkthrough-slide input.togetherjs-self-name { + float: left; + font-size: 14px; + padding: 6px 6px 6px; + border-radius: 4px 4px 4px 4px; + border: 1px solid + #cccccc; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1) inset; + font-family: openSansRegular; + width: 66%; + position: static; + margin: 10px 10px; +} +.togetherjs-mobile-browser .togetherjs section.togetherjs-walkthrough-slide .togetherjs-swatch { + width: 32px; + height: 32px; + background: none repeat scroll 0% 0% + #000000; + position: relative; + float: right; + right: 10px; + border-radius: 4px 4px 4px 4px; + border: 1px solid #cccccc; + top: 10px; +} +.togetherjs-mobile-browser .togetherjs .togetherjs-save-settings { + margin-top: 20px; + margin-bottom: 0px; +} +@media (min-width: 480px) { + .togetherjs-mobile-browser { + /* #togetherjs-dock.togetherjs-dock-right { + width: 27% !important; + }*/ + + } + .togetherjs-mobile-browser .togetherjs-mobile-browser input.togetherjs-self-name { + width: 95%; + margin-top: 10px; + } + .togetherjs-mobile-browser .togetherjs .togetherjs-window { + width: 100%; + left: -2px !important; + top: 50%; + } + .togetherjs-mobile-browser .togetherjs-mobile-browser #togetherjs-edit-name-window section.togetherjs-buttons { + width: 99%; + } + .togetherjs-mobile-browser #togetherjs-confirm-end section.togetherjs-buttons { + width: 96.6%; + position: absolute; + bottom: 0; + } + .togetherjs-mobile-browser #togetherjs-edit-name-window section.togetherjs-buttons { + width: 99%; + } + .togetherjs-mobile-browser input.togetherjs-self-name { + width: 94%; + margin-top: 10px; + } + .togetherjs-mobile-browser #togetherjs-avatar-edit section.togetherjs-buttons { + width: 95.3%; + bottom: 0; + background: #F2F2F2; + padding: 10px; + text-align: right; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + border-top: 1px solid #E1E1E1; + position: absolute; + } + .togetherjs-mobile-browser .togetherjs-modal { + width: 74% !important; + height: 50% !important; + margin: 20% 12% !important; + } + .togetherjs-mobile-browser .togetherjs-mobile-browser .togetherjs .togetherjs-modal { + width: 76% !important; + margin-left: 1%; + height: 94%; + margin-top: 1%; + top: 0; + left: 0; + height: 41%; + margin: 20% 11%; + } + .togetherjs-mobile-browser .togetherjs-modal-wide section.togetherjs-buttons { + width: 97.4% !important; + } +} +@media (max-width: 480px) { + .togetherjs-mobile-browser .togetherjs .togetherjs-window { + width: 96%; + margin-left: 0; + height: 82%; + margin-top: 0%; + z-index: 10003 !important; + top: 20%; + left: -2px; + } + .togetherjs-mobile-browser .togetherjs .togetherjs-window #togetherjs-chat-messages { + width: 105%; + } + .togetherjs-mobile-browser .togetherjs .togetherjs-window .togetherjs-close { + display: none; + } + .togetherjs-mobile-browser .togetherjs .togetherjs-window #togetherjs-chat-messages { + height: 62%; + top: -37px; + } + .togetherjs-mobile-browser #togetherjs-chat-input-box { + width: 94% !important; + bottom: 0px; + position: fixed; + } + .togetherjs-mobile-browser .togetherjs-timestamp { + padding: 8px 15px 0px 10px !important; + } + .togetherjs-mobile-browser input[type='text'], + .togetherjs-mobile-browser input[type='number'], + .togetherjs-mobile-browser textarea { + font-size: 16px !important; + } +} diff --git a/v3/js/togetherjs/togetherjs/togetherjsPackage.js b/v3/js/togetherjs/togetherjs/togetherjsPackage.js new file mode 100644 index 000000000..da062b760 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/togetherjsPackage.js @@ -0,0 +1,10435 @@ +(function() {/** + * almond 0.2.5 Copyright (c) 2011-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that "directory" and not name of the baseName's + //module. For instance, baseName of "one/two/three", maps to + //"one/two/three.js", but we want the directory, "one/two" for + //this normalization. + baseParts = baseParts.slice(0, baseParts.length - 1); + + name = baseParts.concat(name.split("/")); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (typeof callback === 'function') { + + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback.apply(defined[name], args); + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + config = cfg; + if (config.deps) { + req(config.deps, config.callback); + } + return req; + }; + + define = function (name, deps, callback) { + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +define("libs/almond", function(){}); + +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function (){ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
      a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
      t
      ",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
      ",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
      ",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

      ",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
      ","
      "]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
      ").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); +jQuery.noConflict(true); +})(); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('jqueryPlugins',["jquery"], function ($) { + // This isn't really a "module" since it just patches jQuery itself + + // FIX ME Animations TO DO + // walkthrough animations go here + // animate participant cursor and box popping in when they enter the session + // animate participant cursor and box popping out when they leave the session + // animate the participant cursor -> rotate down when they're down the page + $.fn.rotateCursorDown = function () { + $('svg').animate({borderSpacing: -150, opacity: 1}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'rotate('+now+'deg)') + .css('-moz-transform', 'rotate('+now+'deg)') + .css('-ms-transform', 'rotate('+now+'deg)') + .css('-o-transform', 'rotate('+now+'deg)') + .css('transform', 'rotate('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + }; + + // animate the participant cursor -> rotate up when they're on the same frame as the user + $.fn.rotateCursorDown = function () { + $('.togetherjs-cursor svg').animate({borderSpacing: 0, opacity: 1}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'rotate('+now+'deg)') + .css('-moz-transform', 'rotate('+now+'deg)') + .css('-ms-transform', 'rotate('+now+'deg)') + .css('-o-transform', 'rotate('+now+'deg)') + .css('transform', 'rotate('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + }; + + // Move notification when another notification slides in // + + + /* Pop in window from dock button: */ + $.fn.popinWindow = function () { + + //mobile popout window with no animation + if($.browser.mobile) { + + //starting position + this.css({ + left: "0px", + opacity: 1, + "zIndex": 8888 + }); + + //starting position for arrow + $('#togetherjs-window-pointer-right').css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //animate arrow out + $('#togetherjs-window-pointer-right').animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + $('#togetherjs-window-pointer-right').queue(); + + //bounce arrow back + $('#togetherjs-window-pointer-right').animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + //animate window out + this.animate({ + opacity: 1, + left: "0px" + }, { + duration:60, easing:"linear" + }); + this.queue(); + + //bounce window back + this.animate({ + left:'0px' + }, { + duration:60, easing:"linear" + }); + } + + else { + + //starting position + this.css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //starting position for arrow + $('#togetherjs-window-pointer-right').css({ + left: "+=74px", + opacity: 1, + "zIndex": 8888 + }); + + //animate arrow out + $('#togetherjs-window-pointer-right').animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + $('#togetherjs-window-pointer-right').queue(); + + //bounce arrow back + $('#togetherjs-window-pointer-right').animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + //animate window out + this.animate({ + opacity: 1, + left: "-=78px" + }, { + duration:60, easing:"linear" + }); + this.queue(); + + //bounce window back + this.animate({ + left:'+=4px' + }, { + duration:60, easing:"linear" + }); + + } + + }; + + /* Slide in notification window: */ + $.fn.slideIn = function () { + this.css({ + //top: "240px", + left: "+=74px", + opacity: 0, + "zIndex": 8888 + }); + return this.animate({ + "left": "-=74px", + opacity: 1, + "zIndex": 9999 + }, "fast"); + }; + + /* Used to fade away notification windows + flip the bottom of them out: */ + $.fn.fadeOut = function () { + this.animate({borderSpacing: -90, opacity: 0.5}, { + step: function(now, fx) { + if (fx.prop == "borderSpacing") { + $(this).css('-webkit-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-moz-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-ms-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('-o-transform', 'perspective( 600px ) rotateX('+now+'deg)') + .css('transform', 'perspective( 600px ) rotateX('+now+'deg)'); + } else { + $(this).css(fx.prop, now); + } + }, + duration: 500 + }, 'linear').promise().then(function () { + this.css('-webkit-transform', ''); + this.css('-moz-transform', ''); + this.css('-ms-transform', ''); + this.css('-o-transform', ''); + this.css('transform', ''); + this.css("opacity", ""); + }); + return this; + }; + + /* used when user goes down to participant cursor location on screen */ + $.fn.easeTo = function (y) { + return this.animate({ + scrollTop: y + }, { + duration: 400, + easing: "swing" + }); + }; + + // avatar animate in + $.fn.animateDockEntry = function () { + var height = this.height(); + var width = this.width(); + var backgroundSize = height + 4; + var margin = parseInt(this.css("marginLeft"), 10); + + // set starting position CSS for avatar + this.css({ + marginLeft: margin + width/2, + height: 0, + width: 0, + backgroundSize: "0 0" + }); + + var self = this; + + //then animate avatar to the actual dimensions, and reset the values + this.animate({ + marginLeft: margin, + height: height, + width: width, + backgroundSize: backgroundSize + }, { + duration: 600 + }).promise().then(function () { + self.css({ + marginLeft: "", + height: "", + width: "", + backgroundSize: "" + }); + }); + return this; + }; + + // avatar animate out, reverse of above + $.fn.animateDockExit = function () { + + // get the current avatar dimenensions + var height = this.height(); + var width = this.width(); + var backgroundSize = height + 4; + var margin = parseInt(this.css("marginLeft"), 10); + + //then animate avatar to shrink to nothing, and reset the values again + // FIXME this needs to animate from the CENTER + this.animate({ + marginLeft: margin + width/2, + height: 0, + width: 0, + backgroundSize: "0 0", + opacity: 0 + }, 600 ); + + return this; + + }; + + $.fn.animateCursorEntry = function () { + // Make the cursor bubble pop in + }; + + // keyboard typing animation + $.fn.animateKeyboard = function () { + var one = this.find(".togetherjs-typing-ellipse-one"); + var two = this.find(".togetherjs-typing-ellipse-two"); + var three = this.find(".togetherjs-typing-ellipse-three"); + var count = -1; + var run = (function () { + count = (count+1) % 4; + if (count === 0) { + one.css("opacity", 0.5); + two.css("opacity", 0.5); + three.css("opacity", 0.5); + } else if (count == 1) { + one.css("opacity", 1); + } else if (count == 2) { + two.css("opacity", 1); + } else { // count==3 + three.css("opacity", 1); + } + }).bind(this); + run(); + var interval = setInterval(run, 300); + this.data("animateKeyboard", interval); + }; + + $.fn.stopKeyboardAnimation = function () { + clearTimeout(this.data("animateKeyboard")); + this.data("animateKeyboard", null); + }; + + // FIXME: not sure if this is legit, but at least the modern mobile devices we + // care about should have this defined: + if (! $.browser) { + $.browser = {}; + } + $.browser.mobile = window.orientation !== undefined; + if (navigator.userAgent.search(/mobile/i) != -1) { + // FIXME: At least on the Firefox OS simulator I need this + $.browser.mobile = true; + } + + if ($.browser.mobile && window.matchMedia && ! window.matchMedia("screen and (max-screen-width: 480px)").matches) { + // FIXME: for Firefox OS simulator really: + document.body.className += " togetherjs-mobile-browser"; + } + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('util',["jquery", "jqueryPlugins"], function ($) { + var util = {}; + + util.Deferred = $.Deferred; + TogetherJS.$ = $; + + /* A simple class pattern, use like: + + var Foo = util.Class({ + constructor: function (a, b) { + init the class + }, + otherMethod: ... + }); + + You can also give a superclass as the optional first argument. + + Instantiation does not require "new" + + */ + util.Class = function (superClass, prototype) { + var a; + if (prototype === undefined) { + prototype = superClass; + } else { + if (superClass.prototype) { + superClass = superClass.prototype; + } + var newPrototype = Object.create(superClass); + for (a in prototype) { + if (prototype.hasOwnProperty(a)) { + newPrototype[a] = prototype[a]; + } + } + prototype = newPrototype; + } + var ClassObject = function () { + var obj = Object.create(prototype); + obj.constructor.apply(obj, arguments); + obj.constructor = ClassObject; + return obj; + }; + ClassObject.prototype = prototype; + if (prototype.constructor.name) { + ClassObject.className = prototype.constructor.name; + ClassObject.toString = function () { + return '[Class ' + this.className + ']'; + }; + } + if (prototype.classMethods) { + for (a in prototype.classMethods) { + if (prototype.classMethods.hasOwnProperty(a)) { + ClassObject[a] = prototype.classMethods[a]; + } + } + } + return ClassObject; + }; + + /* Extends obj with other, or copies obj if no other is given. */ + util.extend = TogetherJS._extend; + + util.forEachAttr = function (obj, callback, context) { + context = context || obj; + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + callback.call(context, obj[a], a); + } + } + }; + + /* Trim whitespace from a string */ + util.trim = function trim(s) { + return s.replace(/^\s+/, "").replace(/\s+$/, ""); + }; + + /* Convert a string into something safe to use as an HTML class name */ + util.safeClassName = function safeClassName(name) { + return name.replace(/[^a-zA-Z0-9_\-]/g, "_") || "class"; + }; + + util.AssertionError = function (message) { + if (! this instanceof util.AssertionError) { + return new util.AssertionError(message); + } + this.message = message; + this.name = "AssertionError"; + }; + util.AssertionError.prototype = Error.prototype; + + util.assert = function (cond) { + if (! cond) { + var args = ["Assertion error:"].concat(Array.prototype.slice.call(arguments, 1)); + console.error.apply(console, args); + if (console.trace) { + console.trace(); + } + throw new util.AssertionError(args.join(" ")); + } + }; + + /* Generates a random ID */ + util.generateId = function (length) { + length = length || 10; + var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV0123456789'; + var s = ''; + for (var i=0; i this.backoffDetection) { + this._backoff = 0; + } else { + this._backoff++; + } + var time = Math.min(this._backoff * this.backoffTime, this.maxBackoffTime); + setTimeout((function () { + this._setupConnection(); + }).bind(this), time); + } + }).bind(this); + this.socket.onmessage = (function (event) { + this._incoming(event.data); + }).bind(this); + this.socket.onerror = (function (event) { + console.error('WebSocket error:', event.data); + }).bind(this); + } + +}); + + +/* Sends TO a window or iframe */ +channels.PostMessageChannel = util.Class(AbstractChannel, { + _pingPollPeriod: 100, // milliseconds + _pingPollIncrease: 100, // +100 milliseconds for each failure + _pingMax: 2000, // up to a max of 2000 milliseconds + + constructor: function (win, expectedOrigin) { + this.expectedOrigin = expectedOrigin; + this._pingReceived = false; + this._receiveMessage = this._receiveMessage.bind(this); + if (win) { + this.bindWindow(win, true); + } + this._pingFailures = 0; + this.baseConstructor(); + }, + + toString: function () { + var s = '[PostMessageChannel'; + if (this.window) { + s += ' to window ' + this.window; + } else { + s += ' not bound to a window'; + } + if (this.window && ! this._pingReceived) { + s += ' still establishing'; + } + return s + ']'; + }, + + bindWindow: function (win, noSetup) { + if (this.window) { + this.close(); + // Though we deinitialized everything, we aren't exactly closed: + this.closed = false; + } + if (win && win.contentWindow) { + win = win.contentWindow; + } + this.window = win; + // FIXME: The distinction between this.window and window seems unimportant + // in the case of postMessage + var w = this.window; + // In a Content context we add the listener to the local window + // object, but in the addon context we add the listener to some + // other window, like the one we were given: + if (typeof window != "undefined") { + w = window; + } + w.addEventListener("message", this._receiveMessage, false); + if (! noSetup) { + this._setupConnection(); + } + }, + + _send: function (data) { + this.window.postMessage(data, this.expectedOrigin || "*"); + }, + + _ready: function () { + return this.window && this._pingReceived; + }, + + _setupConnection: function () { + if (this.closed || this._pingReceived || (! this.window)) { + return; + } + this._pingFailures++; + this._send("hello"); + // We'll keep sending ping messages until we get a reply + var time = this._pingPollPeriod + (this._pingPollIncrease * this._pingFailures); + time = time > this._pingPollMax ? this._pingPollMax : time; + this._pingTimeout = setTimeout(this._setupConnection.bind(this), time); + }, + + _receiveMessage: function (event) { + if (event.source !== this.window) { + return; + } + if (this.expectedOrigin && event.origin != this.expectedOrigin) { + console.info("Expected message from", this.expectedOrigin, + "but got message from", event.origin); + return; + } + if (! this.expectedOrigin) { + this.expectedOrigin = event.origin; + } + if (event.data == "hello") { + this._pingReceived = true; + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + this._pingTimeout = null; + } + this._flush(); + return; + } + this._incoming(event.data); + }, + + close: function () { + this.closed = true; + this._pingReceived = false; + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + } + window.removeEventListener("message", this._receiveMessage, false); + if (this.onclose) { + this.onclose(); + } + this.emit("close"); + } + +}); + + +/* Handles message FROM an exterior window/parent */ +channels.PostMessageIncomingChannel = util.Class(AbstractChannel, { + + constructor: function (expectedOrigin) { + this.source = null; + this.expectedOrigin = expectedOrigin; + this._receiveMessage = this._receiveMessage.bind(this); + window.addEventListener("message", this._receiveMessage, false); + this.baseConstructor(); + }, + + toString: function () { + var s = '[PostMessageIncomingChannel'; + if (this.source) { + s += ' bound to source ' + s; + } else { + s += ' awaiting source'; + } + return s + ']'; + }, + + _send: function (data) { + this.source.postMessage(data, this.expectedOrigin); + }, + + _ready: function () { + return !!this.source; + }, + + _setupConnection: function () { + }, + + _receiveMessage: function (event) { + if (this.expectedOrigin && this.expectedOrigin != "*" && + event.origin != this.expectedOrigin) { + // FIXME: Maybe not worth mentioning? + console.info("Expected message from", this.expectedOrigin, + "but got message from", event.origin); + return; + } + if (! this.expectedOrigin) { + this.expectedOrigin = event.origin; + } + if (! this.source) { + this.source = event.source; + } + if (event.data == "hello") { + // Just a ping + this.source.postMessage("hello", this.expectedOrigin); + return; + } + this._incoming(event.data); + }, + + close: function () { + this.closed = true; + window.removeEventListener("message", this._receiveMessage, false); + if (this._pingTimeout) { + clearTimeout(this._pingTimeout); + } + if (this.onclose) { + this.onclose(); + } + this.emit("close"); + } + +}); + +channels.Router = util.Class(util.mixinEvents({ + + constructor: function (channel) { + this._channelMessage = this._channelMessage.bind(this); + this._channelClosed = this._channelClosed.bind(this); + this._routes = Object.create(null); + if (channel) { + this.bindChannel(channel); + } + }, + + bindChannel: function (channel) { + if (this.channel) { + this.channel.removeListener("message", this._channelMessage); + this.channel.removeListener("close", this._channelClosed); + } + this.channel = channel; + this.channel.on("message", this._channelMessage.bind(this)); + this.channel.on("close", this._channelClosed.bind(this)); + }, + + _channelMessage: function (msg) { + if (msg.type == "route") { + var id = msg.routeId; + var route = this._routes[id]; + if (! route) { + console.warn("No route with the id", id); + return; + } + if (msg.close) { + this._closeRoute(route.id); + } else { + if (route.onmessage) { + route.onmessage(msg.message); + } + route.emit("message", msg.message); + } + } + }, + + _channelClosed: function () { + for (var id in this._routes) { + this._closeRoute(id); + } + }, + + _closeRoute: function (id) { + var route = this._routes[id]; + if (route.onclose) { + route.onclose(); + } + route.emit("close"); + delete this._routes[id]; + }, + + makeRoute: function (id) { + id = id || util.generateId(); + var route = Route(this, id); + this._routes[id] = route; + return route; + } +})); + +var Route = util.Class(util.mixinEvents({ + constructor: function (router, id) { + this.router = router; + this.id = id; + }, + + send: function (msg) { + this.router.channel.send({ + type: "route", + routeId: this.id, + message: msg + }); + }, + + close: function () { + if (this.router._routes[this.id] !== this) { + // This route instance has been overwritten, so ignore + return; + } + delete this.router._routes[this.id]; + } + +})); + +return channels; + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('storage',["util"], function (util) { + var assert = util.assert; + var Deferred = util.Deferred; + var DEFAULT_SETTINGS = { + name: "", + defaultName: "", + avatar: null, + stickyShare: null, + color: null, + seenIntroDialog: false, + seenWalkthrough: false, + dontShowRtcInfo: false + }; + + var DEBUG_STORAGE = false; + + var Storage = util.Class({ + constructor: function (name, storage, prefix) { + this.name = name; + this.storage = storage; + this.prefix = prefix; + }, + + get: function (key, defaultValue) { + var self = this; + return Deferred(function (def) { + // Strictly this isn't necessary, but eventually I want to move to something more + // async for the storage, and this simulates that much better. + setTimeout(util.resolver(def, function () { + key = self.prefix + key; + var value = self.storage.getItem(key); + if (! value) { + value = defaultValue; + if (DEBUG_STORAGE) { + console.debug("Get storage", key, "defaults to", value); + } + } else { + value = JSON.parse(value); + if (DEBUG_STORAGE) { + console.debug("Get storage", key, "=", value); + } + } + return value; + })); + }); + }, + + set: function (key, value) { + var self = this; + if (value !== undefined) { + value = JSON.stringify(value); + } + return Deferred(function (def) { + key = self.prefix + key; + if (value === undefined) { + self.storage.removeItem(key); + if (DEBUG_STORAGE) { + console.debug("Delete storage", key); + } + } else { + self.storage.setItem(key, value); + if (DEBUG_STORAGE) { + console.debug("Set storage", key, value); + } + } + setTimeout(def.resolve); + }); + }, + + clear: function () { + var self = this; + var promises = []; + return Deferred((function (def) { + this.keys().then(function (keys) { + keys.forEach(function (key) { + // FIXME: technically we're ignoring the promise returned by all + // these sets: + promises.push(self.set(key, undefined)); + }); + util.resolveMany(promises).then(function () { + def.resolve(); + }); + }); + }).bind(this)); + }, + + keys: function (prefix, excludePrefix) { + // Returns a list of keys, potentially with the given prefix + var self = this; + return Deferred(function (def) { + setTimeout(util.resolver(def, function () { + prefix = prefix || ""; + var result = []; + for (var i = 0; i < self.storage.length; i++) { + var key = self.storage.key(i); + if (key.indexOf(self.prefix + prefix) === 0) { + var shortKey = key.substr(self.prefix.length); + if (excludePrefix) { + shortKey = shortKey.substr(prefix.length); + } + result.push(shortKey); + } + } + return result; + })); + }); + }, + + toString: function () { + return '[storage for ' + this.name + ']'; + } + + }); + + var namePrefix = TogetherJS.config.get("storagePrefix"); + TogetherJS.config.close("storagePrefix"); + + var storage = Storage('localStorage', localStorage, namePrefix + "."); + + storage.settings = util.mixinEvents({ + defaults: DEFAULT_SETTINGS, + + get: function (name) { + assert(storage.settings.defaults.hasOwnProperty(name), "Unknown setting:", name); + return storage.get("settings." + name, storage.settings.defaults[name]); + }, + + set: function (name, value) { + assert(storage.settings.defaults.hasOwnProperty(name), "Unknown setting:", name); + return storage.set("settings." + name, value); + } + + }); + + storage.tab = Storage('sessionStorage', sessionStorage, namePrefix + "-session."); + + return storage; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('session',["require", "util", "channels", "jquery", "storage"], function (require, util, channels, $, storage) { + + var DEBUG = true; + + // This is the amount of time in which a hello-back must be received after a hello + // for us to respect a URL change: + var HELLO_BACK_CUTOFF = 1500; + + var session = util.mixinEvents(util.Module("session")); + var assert = util.assert; + + // We will load this module later (there's a circular import): + var peers; + + // This is the hub we connect to: + session.shareId = null; + // This is the ID that identifies this client: + session.clientId = null; + session.router = channels.Router(); + // Indicates if TogetherJS has just started (not continuing from a saved session): + session.firstRun = false; + + // This is the key we use for localStorage: + var localStoragePrefix = "togetherjs."; + // This is the channel to the hub: + var channel = null; + + // Setting, essentially global: + session.AVATAR_SIZE = 90; + + var MAX_SESSION_AGE = 30*24*60*60*1000; // 30 days + + /**************************************** + * URLs + */ + var includeHashInUrl = TogetherJS.config.get("includeHashInUrl"); + TogetherJS.config.close("includeHashInUrl"); + var currentUrl = (location.href + "").replace(/\#.*$/, ""); + if (includeHashInUrl) { + currentUrl = location.href; + } + + session.hubUrl = function (id) { + id = id || session.shareId; + assert(id, "URL cannot be resolved before TogetherJS.shareId has been initialized"); + TogetherJS.config.close("hubBase"); + var hubBase = TogetherJS.config.get("hubBase"); + return hubBase.replace(/\/*$/, "") + "/hub/" + id; + }; + + session.shareUrl = function () { + assert(session.shareId, "Attempted to access shareUrl() before shareId is set"); + var hash = location.hash; + var m = /\?[^#]*/.exec(location.href); + var query = ""; + if (m) { + query = m[0]; + } + hash = hash.replace(/&?togetherjs-[a-zA-Z0-9]+/, ""); + hash = hash || "#"; + return location.protocol + "//" + location.host + location.pathname + query + + hash + "&togetherjs=" + session.shareId; + }; + + session.recordUrl = function () { + assert(session.shareId); + var url = TogetherJS.baseUrl.replace(/\/*$/, "") + "/togetherjs/recorder.html"; + url += "#&togetherjs=" + session.shareId + "&hubBase=" + TogetherJS.config.get("hubBase"); + return url; + }; + + /* location.href without the hash */ + session.currentUrl = function () { + if (includeHashInUrl) { + return location.href; + } else { + return location.href.replace(/#.*/, ""); + } + }; + + /**************************************** + * Message handling/dispatching + */ + + session.hub = util.mixinEvents({}); + + var IGNORE_MESSAGES = TogetherJS.config.get("ignoreMessages"); + if (IGNORE_MESSAGES === true) { + DEBUG = false; + IGNORE_MESSAGES = []; + } + // These are messages sent by clients who aren't "part" of the TogetherJS session: + var MESSAGES_WITHOUT_CLIENTID = ["who", "invite", "init-connection"]; + + // We ignore incoming messages from the channel until this is true: + var readyForMessages = false; + + function openChannel() { + assert(! channel, "Attempt to re-open channel"); + console.info("Connecting to", session.hubUrl(), location.href); + var c = channels.WebSocketChannel(session.hubUrl()); + c.onmessage = function (msg) { + if (! readyForMessages) { + if (DEBUG) { + console.info("In (but ignored for being early):", msg); + } + return; + } + if (DEBUG && IGNORE_MESSAGES.indexOf(msg.type) == -1) { + console.info("In:", msg); + } + if (! peers) { + // We're getting messages before everything is fully initialized + console.warn("Message received before all modules loaded (ignoring):", msg); + return; + } + if ((! msg.clientId) && MESSAGES_WITHOUT_CLIENTID.indexOf(msg.type) == -1) { + console.warn("Got message without clientId, where clientId is required", msg); + return; + } + if (msg.clientId) { + msg.peer = peers.getPeer(msg.clientId, msg); + } + if (msg.type == "hello" || msg.type == "hello-back" || msg.type == "peer-update") { + // We do this here to make sure this is run before any other + // hello handlers: + msg.peer.updateFromHello(msg); + } + if (msg.peer) { + msg.sameUrl = msg.peer.url == currentUrl; + if (!msg.peer.isSelf) { + msg.peer.updateMessageDate(msg); + } + } + session.hub.emit(msg.type, msg); + TogetherJS._onmessage(msg); + }; + channel = c; + session.router.bindChannel(channel); + } + + session.send = function (msg) { + if (DEBUG && IGNORE_MESSAGES.indexOf(msg.type) == -1) { + console.info("Send:", msg); + } + msg.clientId = session.clientId; + channel.send(msg); + }; + + session.appSend = function (msg) { + var type = msg.type; + if (type.search(/^togetherjs\./) === 0) { + type = type.substr("togetherjs.".length); + } else if (type.search(/^app\./) === -1) { + type = "app." + type; + } + msg.type = type; + session.send(msg); + }; + + /**************************************** + * Standard message responses + */ + + /* Always say hello back, and keep track of peers: */ + session.hub.on("hello hello-back", function (msg) { + if (msg.type == "hello") { + sendHello(true); + } + if (session.isClient && (! msg.isClient) && + session.firstRun && session.timeHelloSent && + Date.now() - session.timeHelloSent < HELLO_BACK_CUTOFF) { + processFirstHello(msg); + } + }); + + session.hub.on("who", function (msg) { + sendHello(true); + }); + + function processFirstHello(msg) { + if (! msg.sameUrl) { + var url = msg.url; + if (msg.urlHash) { + url += msg.urlHash; + } + require("ui").showUrlChangeMessage(msg.peer, url); + location.href = url; + } + } + + session.timeHelloSent = null; + + function sendHello(helloBack) { + var msg = session.makeHelloMessage(helloBack); + if (! helloBack) { + session.timeHelloSent = Date.now(); + peers.Self.url = msg.url; + } + session.send(msg); + } + + session.makeHelloMessage = function (helloBack) { + var msg = { + name: peers.Self.name || peers.Self.defaultName, + avatar: peers.Self.avatar, + color: peers.Self.color, + url: session.currentUrl(), + urlHash: location.hash, + // FIXME: titles update, we should track those changes: + title: document.title, + rtcSupported: session.RTCSupported, + isClient: session.isClient + }; + if (helloBack) { + msg.type = "hello-back"; + } else { + msg.type = "hello"; + msg.clientVersion = TogetherJS.version; + } + if (! TogetherJS.startup.continued) { + msg.starting = true; + } + // This is a chance for other modules to effect the hello message: + session.emit("prepare-hello", msg); + return msg; + }; + /**************************************** + * Lifecycle (start and end) + */ + + // These are Javascript files that implement features, and so must + // be injected at runtime because they aren't pulled in naturally + // via define(). + // ui must be the first item: + var features = ["peers", "ui", "chat", "webrtc", "cursor", "startup", "videos", "forms", "visibilityApi", "youtubeVideos"]; + + function getRoomName(prefix, maxSize) { + var findRoom = TogetherJS.config.get("hubBase").replace(/\/*$/, "") + "/findroom"; + return $.ajax({ + url: findRoom, + dataType: "json", + data: {prefix: prefix, max: maxSize} + }).then(function (resp) { + return resp.name; + }); + } + + function initIdentityId() { + return util.Deferred(function (def) { + if (session.identityId) { + def.resolve(); + return; + } + storage.get("identityId").then(function (identityId) { + if (! identityId) { + identityId = util.generateId(); + storage.set("identityId", identityId); + } + session.identityId = identityId; + // We don't actually have to wait for the set to succede, so + // long as session.identityId is set + def.resolve(); + }); + }); + } + + initIdentityId.done = initIdentityId(); + + function initShareId() { + return util.Deferred(function (def) { + var hash = location.hash; + var shareId = session.shareId; + var isClient = true; + var set = true; + var sessionId; + session.firstRun = ! TogetherJS.startup.continued; + if (! shareId) { + if (TogetherJS.startup._joinShareId) { + // Like, below, this *also* means we got the shareId from the hash + // (in togetherjs.js): + shareId = TogetherJS.startup._joinShareId; + } + } + if (! shareId) { + // FIXME: I'm not sure if this will ever happen, because togetherjs.js should + // handle it + var m = /&?togetherjs=([^&]*)/.exec(hash); + if (m) { + isClient = ! m[1]; + shareId = m[2]; + var newHash = hash.substr(0, m.index) + hash.substr(m.index + m[0].length); + location.hash = newHash; + } + } + return storage.tab.get("status").then(function (saved) { + var findRoom = TogetherJS.config.get("findRoom"); + TogetherJS.config.close("findRoom"); + if (findRoom && saved && findRoom != saved.shareId) { + console.info("Ignoring findRoom in lieu of continued session"); + } else if (findRoom && TogetherJS.startup._joinShareId) { + console.info("Ignoring findRoom in lieu of explicit invite to session"); + } + if (findRoom && typeof findRoom == "string" && (! saved) && (! TogetherJS.startup._joinShareId)) { + isClient = true; + shareId = findRoom; + sessionId = util.generateId(); + } else if (findRoom && (! saved) && (! TogetherJS.startup._joinShareId)) { + assert(findRoom.prefix && typeof findRoom.prefix == "string", "Bad findRoom.prefix", findRoom); + assert(findRoom.max && typeof findRoom.max == "number" && findRoom.max > 0, + "Bad findRoom.max", findRoom); + sessionId = util.generateId(); + if (findRoom.prefix.search(/[^a-zA-Z0-9]/) != -1) { + console.warn("Bad value for findRoom.prefix:", JSON.stringify(findRoom.prefix)); + } + getRoomName(findRoom.prefix, findRoom.max).then(function (shareId) { + // FIXME: duplicates code below: + session.clientId = session.identityId + "." + sessionId; + storage.tab.set("status", {reason: "joined", shareId: shareId, running: true, date: Date.now(), sessionId: sessionId}); + session.isClient = true; + session.shareId = shareId; + session.emit("shareId"); + def.resolve(session.shareId); + }); + return; + } else if (TogetherJS.startup._launch) { + if (saved) { + isClient = saved.reason == "joined"; + if (! shareId) { + shareId = saved.shareId; + } + sessionId = saved.sessionId; + } else { + isClient = TogetherJS.startup.reason == "joined"; + assert(! sessionId); + sessionId = util.generateId(); + } + if (! shareId) { + shareId = util.generateId(); + } + } else if (saved) { + isClient = saved.reason == "joined"; + TogetherJS.startup.reason = saved.reason; + TogetherJS.startup.continued = true; + shareId = saved.shareId; + sessionId = saved.sessionId; + // The only case when we don't need to set the storage status again is when + // we're already set to be running + set = ! saved.running; + } else { + throw new util.AssertionError("No saved status, and no startup._launch request; why did TogetherJS start?"); + } + assert(session.identityId); + session.clientId = session.identityId + "." + sessionId; + if (set) { + storage.tab.set("status", {reason: TogetherJS.startup.reason, shareId: shareId, running: true, date: Date.now(), sessionId: sessionId}); + } + session.isClient = isClient; + session.shareId = shareId; + session.emit("shareId"); + def.resolve(session.shareId); + }); + }); + } + + function initStartTarget() { + var id; + if (TogetherJS.startup.button) { + id = TogetherJS.startup.button.id; + if (id) { + storage.set("startTarget", id); + } + return; + } + storage.get("startTarget").then(function (id) { + var el = document.getElementById(id); + if (el) { + TogetherJS.startup.button = el; + } + }); + } + session.start = function () { + initStartTarget(); + initIdentityId().then(function () { + initShareId().then(function () { + readyForMessages = false; + openChannel(); + require(["ui"], function (ui) { + TogetherJS.running = true; + ui.prepareUI(); + require(features, function () { + $(function () { + peers = require("peers"); + var startup = require("startup"); + session.emit("start"); + session.once("ui-ready", function () { + readyForMessages = true; + startup.start(); + }); + ui.activateUI(); + TogetherJS.config.close("enableAnalytics"); + if (TogetherJS.config.get("enableAnalytics")) { + require(["analytics"], function (analytics) { + analytics.activate(); + }); + } + peers._SelfLoaded.then(function () { + sendHello(false); + }); + TogetherJS.emit("ready"); + }); + }); + }); + }); + }); + }; + + session.close = function (reason) { + TogetherJS.running = false; + var msg = {type: "bye"}; + if (reason) { + msg.reason = reason; + } + session.send(msg); + session.emit("close"); + var name = window.name; + storage.tab.get("status").then(function (saved) { + if (! saved) { + console.warn("No session information saved in", "status." + name); + } else { + saved.running = false; + saved.date = Date.now(); + storage.tab.set("status", saved); + } + channel.close(); + channel = null; + session.shareId = null; + session.emit("shareId"); + TogetherJS.emit("close"); + TogetherJS._teardown(); + }); + }; + + session.on("start", function () { + $(window).on("resize", resizeEvent); + if (includeHashInUrl) { + $(window).on("hashchange", hashchangeEvent); + } + }); + + session.on("close", function () { + $(window).off("resize", resizeEvent); + if (includeHashInUrl) { + $(window).off("hashchange", hashchangeEvent); + } + }); + + function hashchangeEvent() { + // needed because when message arives from peer this variable will be checked to + // decide weather to show actions or not + sendHello(false); + } + + function resizeEvent() { + session.emit("resize"); + } + + if (TogetherJS.startup._launch) { + setTimeout(session.start); + } + + util.testExpose({ + getChannel: function () { + return channel; + } + }); + + return session; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// FIXME: maybe it would be better to dynamically assemble the first +// argument to define() here to include the localized module: +define('templates',["util", "require"], function (util, require) { + var assert = util.assert; + + function clean(t) { + // Removes <% /* ... */ %> comments: + t = t.replace(/[<][%]\s*\/\*[\S\s\r\n]*\*\/\s*[%][>]/, ""); + t = util.trim(t); + t = t.replace(/http:\/\/localhost:8080/g, TogetherJS.baseUrl); + t = t.replace(/TOOL_NAME/g, 'TogetherJS'); + t = t.replace(/SITE_NAME/g, '[site name]'); + t = t.replace(/TOOL_SITE_LINK/g, 'TogetherJS'); + return t; + } + + var lang = TogetherJS.getConfig("lang") || "en-US"; + var moduleName = "templates-" + lang; + var templatesLang; + require([moduleName], function (mod) { + templatesLang = mod; + }); + + return function (resourceName) { + // Sometimes require([moduleName]) doesn't return even after the + // module has been loaded, but this sync version of require() will + // pick up the module in that case: + if (! templatesLang) { + try { + templatesLang = require(moduleName); + } catch (e) { + console.warn("Error requiring module:", e); + } + } + assert(templatesLang, "Templates not yet loaded"); + return clean(templatesLang[resourceName]); + }; + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('peers',["util", "session", "storage", "require", "templates"], function (util, session, storage, require, templates) { + var peers = util.Module("peers"); + var assert = util.assert; + var CHECK_ACTIVITY_INTERVAL = 10*1000; // Every 10 seconds see if someone has gone idle + var IDLE_TIME = 3*60*1000; // Idle time is 3 minutes + var TAB_IDLE_TIME = 2*60*1000; // When you tab away, after two minutes you'll say you are idle + var BYE_TIME = 10*60*1000; // After 10 minutes of inactivity the person is considered to be "gone" + + var ui; + require(["ui"], function (uiModule) { + ui = uiModule; + }); + + var DEFAULT_NICKNAMES = templates("names").split(/,\s*/g); + var Peer = util.Class({ + + isSelf: false, + + constructor: function (id, attrs) { + attrs = attrs || {}; + assert(id); + assert(! Peer.peers[id]); + this.id = id; + this.identityId = attrs.identityId || null; + this.status = attrs.status || "live"; + this.idle = attrs.status || "active"; + this.name = attrs.name || null; + this.avatar = attrs.avatar || null; + this.color = attrs.color || "#00FF00"; + this.view = ui.PeerView(this); + this.lastMessageDate = 0; + this.following = attrs.following || false; + Peer.peers[id] = this; + var joined = attrs.joined || false; + if (attrs.fromHelloMessage) { + this.updateFromHello(attrs.fromHelloMessage); + if (attrs.fromHelloMessage.type == "hello") { + joined = true; + } + } + peers.emit("new-peer", this); + if (joined) { + this.view.notifyJoined(); + } + this.view.update(); + }, + + repr: function () { + return "Peer(" + JSON.stringify(this.id) + ")"; + }, + + serialize: function () { + return { + id: this.id, + status: this.status, + idle: this.idle, + url: this.url, + hash: this.hash, + title: this.title, + identityId: this.identityId, + rtcSupported: this.rtcSupported, + name: this.name, + avatar: this.avatar, + color: this.color, + following: this.following + }; + }, + + destroy: function () { + this.view.destroy(); + delete Peer.peers[this.id]; + }, + + updateMessageDate: function (msg) { + if (this.idle == "inactive") { + this.update({idle: "active"}); + } + if (this.status == "bye") { + this.unbye(); + } + this.lastMessageDate = Date.now(); + }, + + updateFromHello: function (msg) { + var urlUpdated = false; + var activeRTC = false; + var identityUpdated = false; + if (msg.url && msg.url != this.url) { + this.url = msg.url; + this.hash = null; + this.title = null; + urlUpdated = true; + } + if (msg.hash != this.hash) { + this.hash = msg.urlHash; + urlUpdated = true; + } + if (msg.title != this.title) { + this.title = msg.title; + urlUpdated = true; + } + if (msg.rtcSupported !== undefined) { + this.rtcSupported = msg.rtcSupported; + } + if (msg.identityId !== undefined) { + this.identityId = msg.identityId; + } + if (msg.name && msg.name != this.name) { + this.name = msg.name; + identityUpdated = true; + } + if (msg.avatar && msg.avatar != this.avatar) { + util.assertValidUrl(msg.avatar); + this.avatar = msg.avatar; + identityUpdated = true; + } + if (msg.color && msg.color != this.color) { + this.color = msg.color; + identityUpdated = true; + } + if (msg.isClient !== undefined) { + this.isCreator = ! msg.isClient; + } + if (this.status != "live") { + this.status = "live"; + peers.emit("status-updated", this); + } + if (this.idle != "active") { + this.idle = "active"; + peers.emit("idle-updated", this); + } + if (msg.rtcSupported) { + peers.emit("rtc-supported", this); + } + if (urlUpdated) { + peers.emit("url-updated", this); + } + if (identityUpdated) { + peers.emit("identity-updated", this); + } + // FIXME: I can't decide if this is the only time we need to emit + // this message (and not .update() or other methods) + if (this.following) { + session.emit("follow-peer", this); + } + }, + + update: function (attrs) { + // FIXME: should probably test that only a couple attributes are settable + // particularly status and idle + if (attrs.idle) { + this.idle = attrs.idle; + } + if (attrs.status) { + this.status = attrs.status; + } + this.view.update(); + }, + + className: function (prefix) { + prefix = prefix || ""; + return prefix + util.safeClassName(this.id); + }, + + bye: function () { + if (this.status != "bye") { + this.status = "bye"; + peers.emit("status-updated", this); + } + this.view.update(); + }, + + unbye: function () { + if (this.status == "bye") { + this.status = "live"; + peers.emit("status-updated", this); + } + this.view.update(); + }, + + nudge: function () { + session.send({ + type: "url-change-nudge", + url: location.href, + to: this.id + }); + }, + + follow: function () { + if (this.following) { + return; + } + peers.getAllPeers().forEach(function (p) { + if (p.following) { + p.unfollow(); + } + }); + this.following = true; + // We have to make sure we remember this, even if we change URLs: + storeSerialization(); + this.view.update(); + session.emit("follow-peer", this); + }, + + unfollow: function () { + this.following = false; + storeSerialization(); + this.view.update(); + } + + }); + + // FIXME: I can't decide where this should actually go, seems weird + // that it is emitted and handled in the same module + session.on("follow-peer", function (peer) { + if (peer.url != session.currentUrl()) { + var url = peer.url; + if (peer.urlHash) { + url += peer.urlHash; + } + location.href = url; + } + }); + + Peer.peers = {}; + + Peer.deserialize = function (obj) { + obj.fromStorage = true; + var peer = Peer(obj.id, obj); + }; + + peers.Self = undefined; + + session.on("start", function () { + if (peers.Self) { + return; + } + /* Same interface as Peer, represents oneself (local user): */ + peers.Self = util.mixinEvents({ + isSelf: true, + id: session.clientId, + identityId: session.identityId, + status: "live", + idle: "active", + name: null, + avatar: null, + color: null, + defaultName: null, + loaded: false, + isCreator: ! session.isClient, + + update: function (attrs) { + var updatePeers = false; + var updateIdle = false; + var updateMsg = {type: "peer-update"}; + if (typeof attrs.name == "string" && attrs.name != this.name) { + this.name = attrs.name; + updateMsg.name = this.name; + if (! attrs.fromLoad) { + storage.settings.set("name", this.name); + updatePeers = true; + } + } + if (attrs.avatar && attrs.avatar != this.avatar) { + util.assertValidUrl(attrs.avatar); + this.avatar = attrs.avatar; + updateMsg.avatar = this.avatar; + if (! attrs.fromLoad) { + storage.settings.set("avatar", this.avatar); + updatePeers = true; + } + } + if (attrs.color && attrs.color != this.color) { + this.color = attrs.color; + updateMsg.color = this.color; + if (! attrs.fromLoad) { + storage.settings.set("color", this.color); + updatePeers = true; + } + } + if (attrs.defaultName && attrs.defaultName != this.defaultName) { + this.defaultName = attrs.defaultName; + if (! attrs.fromLoad) { + storage.settings.set("defaultName", this.defaultName); + updatePeers = true; + } + } + if (attrs.status && attrs.status != this.status) { + this.status = attrs.status; + peers.emit("status-updated", this); + } + if (attrs.idle && attrs.idle != this.idle) { + this.idle = attrs.idle; + updateIdle = true; + peers.emit("idle-updated", this); + } + this.view.update(); + if (updatePeers && ! attrs.fromLoad) { + session.emit("self-updated"); + session.send(updateMsg); + } + if (updateIdle && ! attrs.fromLoad) { + session.send({ + type: "idle-status", + idle: this.idle + }); + } + }, + + className: function (prefix) { + prefix = prefix || ""; + return prefix + "self"; + }, + + _loadFromSettings: function () { + return util.resolveMany( + storage.settings.get("name"), + storage.settings.get("avatar"), + storage.settings.get("defaultName"), + storage.settings.get("color")).then((function (name, avatar, defaultName, color) { + if (! defaultName) { + defaultName = util.pickRandom(DEFAULT_NICKNAMES); + + storage.settings.set("defaultName", defaultName); + } + if (! color) { + color = Math.floor(Math.random() * 0xffffff).toString(16); + while (color.length < 6) { + color = "0" + color; + } + color = "#" + color; + storage.settings.set("color", color); + } + if (! avatar) { + avatar = TogetherJS.baseUrl + "/togetherjs/images/default-avatar.png"; + } + this.update({ + name: name, + avatar: avatar, + defaultName: defaultName, + color: color, + fromLoad: true + }); + peers._SelfLoaded.resolve(); + }).bind(this)); // FIXME: ignoring error + }, + + _loadFromApp: function () { + // FIXME: I wonder if these should be optionally functions? + // We could test typeof==function to distinguish between a getter and a concrete value + var getUserName = TogetherJS.config.get("getUserName"); + var getUserColor = TogetherJS.config.get("getUserColor"); + var getUserAvatar = TogetherJS.config.get("getUserAvatar"); + var name, color, avatar; + if (getUserName) { + if (typeof getUserName == "string") { + name = getUserName; + } else { + name = getUserName(); + } + if (name && typeof name != "string") { + // FIXME: test for HTML safe? Not that we require it, but + // <>'s are probably a sign something is wrong. + console.warn("Error in getUserName(): should return a string (got", name, ")"); + name = null; + } + } + if (getUserColor) { + if (typeof getUserColor == "string") { + color = getUserColor; + } else { + color = getUserColor(); + } + if (color && typeof color != "string") { + // FIXME: would be nice to test for color-ness here. + console.warn("Error in getUserColor(): should return a string (got", color, ")"); + color = null; + } + } + if (getUserAvatar) { + if (typeof getUserAvatar == "string") { + avatar = getUserAvatar; + } else { + avatar = getUserAvatar(); + } + if (avatar && typeof avatar != "string") { + console.warn("Error in getUserAvatar(): should return a string (got", avatar, ")"); + avatar = null; + } + } + if (name || color || avatar) { + this.update({ + name: name, + color: color, + avatar: avatar + }); + } + } + }); + + peers.Self.view = ui.PeerView(peers.Self); + storage.tab.get("peerCache").then(deserialize); + peers.Self._loadFromSettings().then(function() { + peers.Self._loadFromApp(); + peers.Self.view.update(); + session.emit("self-updated"); + }); + }); + + session.on("refresh-user-data", function () { + if (peers.Self) { + peers.Self._loadFromApp(); + } + }); + + TogetherJS.config.track( + "getUserName", + TogetherJS.config.track( + "getUserColor", + TogetherJS.config.track( + "getUserAvatar", + function () { + if (peers.Self) { + peers.Self._loadFromApp(); + } + } + ) + ) + ); + + peers._SelfLoaded = util.Deferred(); + + function serialize() { + var peers = []; + util.forEachAttr(Peer.peers, function (peer) { + peers.push(peer.serialize()); + }); + return { + peers: peers + }; + } + + function deserialize(obj) { + if (! obj) { + return; + } + obj.peers.forEach(function (peer) { + Peer.deserialize(peer); + }); + } + + peers.getPeer = function getPeer(id, message) { + assert(id); + var peer = Peer.peers[id]; + if (id === session.clientId) { + return peers.Self; + } + if (message && ! peer) { + peer = Peer(id, {fromHelloMessage: message}); + return peer; + } + assert(peer, "No peer with id:", id); + if (message && + (message.type == "hello" || message.type == "hello-back" || + message.type == "peer-update")) { + peer.updateFromHello(message); + peer.view.update(); + } + return Peer.peers[id]; + }; + + peers.getAllPeers = function (liveOnly) { + var result = []; + util.forEachAttr(Peer.peers, function (peer) { + if (liveOnly && peer.status != "live") { + return; + } + result.push(peer); + }); + return result; + }; + + function checkActivity() { + var ps = peers.getAllPeers(); + var now = Date.now(); + ps.forEach(function (p) { + if (p.idle == "active" && now - p.lastMessageDate > IDLE_TIME) { + p.update({idle: "inactive"}); + } + if (p.status != "bye" && now - p.lastMessageDate > BYE_TIME) { + p.bye(); + } + }); + } + + session.hub.on("bye", function (msg) { + var peer = peers.getPeer(msg.clientId); + peer.bye(); + }); + + var checkActivityTask = null; + + session.on("start", function () { + if (checkActivityTask) { + console.warn("Old peers checkActivityTask left over?"); + clearTimeout(checkActivityTask); + } + checkActivityTask = setInterval(checkActivity, CHECK_ACTIVITY_INTERVAL); + }); + + session.on("close", function () { + util.forEachAttr(Peer.peers, function (peer) { + peer.destroy(); + }); + storage.tab.set("peerCache", undefined); + clearTimeout(checkActivityTask); + checkActivityTask = null; + }); + + var tabIdleTimeout = null; + + session.on("visibility-change", function (hidden) { + if (hidden) { + if (tabIdleTimeout) { + clearTimeout(tabIdleTimeout); + } + tabIdleTimeout = setTimeout(function () { + peers.Self.update({idle: "inactive"}); + }, TAB_IDLE_TIME); + } else { + if (tabIdleTimeout) { + clearTimeout(tabIdleTimeout); + } + if (peers.Self.idle == "inactive") { + peers.Self.update({idle: "active"}); + } + } + }); + + session.hub.on("idle-status", function (msg) { + msg.peer.update({idle: msg.idle}); + }); + + // Pings are a straight alive check, and contain no more information: + session.hub.on("ping", function () { + session.send({type: "ping-back"}); + }); + + window.addEventListener("pagehide", function () { + // FIXME: not certain if this should be tab local or not: + storeSerialization(); + }, false); + + function storeSerialization() { + storage.tab.set("peerCache", serialize()); + } + + util.mixinEvents(peers); + + util.testExpose({ + setIdleTime: function (time) { + IDLE_TIME = time; + CHECK_ACTIVITY_INTERVAL = time / 2; + if (TogetherJS.running) { + clearTimeout(checkActivityTask); + checkActivityTask = setInterval(checkActivity, CHECK_ACTIVITY_INTERVAL); + } + } + }); + + util.testExpose({ + setByeTime: function (time) { + BYE_TIME = time; + CHECK_ACTIVITY_INTERVAL = Math.min(CHECK_ACTIVITY_INTERVAL, time / 2); + if (TogetherJS.running) { + clearTimeout(checkActivityTask); + checkActivityTask = setInterval(checkActivity, CHECK_ACTIVITY_INTERVAL); + } + } + }); + + return peers; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define('windowing',["jquery", "util", "peers", "session"], function ($, util, peers, session) { + var assert = util.assert; + var windowing = util.Module("windowing"); + var $window = $(window); + // This is also in togetherjs.less, under .togetherjs-animated + var ANIMATION_DURATION = 1000; + + /* Displays one window. A window must already exist. This hides other windows, and + positions the window according to its data-bound-to attributes */ + windowing.show = function (element, options) { + element = $(element); + options = options || {}; + options.bind = options.bind || element.attr("data-bind-to"); + var notification = element.hasClass("togetherjs-notification"); + var modal = element.hasClass("togetherjs-modal"); + if (options.bind) { + options.bind = $(options.bind); + } + windowing.hide(); + element.stop(); + element.show(); + // In addition to being hidden, the window can be faded out, which we want to undo: + element.css({opacity: "1"}); + if (options.bind) { + assert(! modal, "Binding does not currently work with modals"); + bind(element, options.bind); + } + if (notification) { + element.slideIn(); + } else if (! modal) { + element.popinWindow(); + } + if (modal) { + getModalBackground().show(); + modalEscape.bind(); + } + onClose = options.onClose || null; + session.emit("display-window", element.attr("id"), element); + }; + + var onClose = null; + + /* Moves a window to be attached to data-bind-to, e.g., the button + that opened the window. Or you can provide an element that it should bind to. */ + function bind(win, bound) { + if ($.browser.mobile) { + return; + } + win = $(win); + assert(bound.length, "Cannot find binding:", bound.selector, "from:", win.selector); + // FIXME: hardcoding + var ifacePos = "right"; + //var ifacePos = panelPosition(); + var boundPos = bound.offset(); + boundPos.height = bound.height(); + boundPos.width = bound.width(); + var windowHeight = $window.height(); + boundPos.top -= $window.scrollTop(); + boundPos.left -= $window.scrollLeft(); + // FIXME: I appear to have to add the padding to the width to get a "true" + // width. But it's still not entirely consistent. + var height = win.height() + 5; + var width = win.width() + 20; + var left, top; + if (ifacePos == "right") { + left = boundPos.left - 11 - width; + top = boundPos.top + (boundPos.height / 2) - (height / 2); + } else if (ifacePos == "left") { + left = boundPos.left + boundPos.width + 15; + top = boundPos.top + (boundPos.height / 2) - (height / 2); + } else if (ifacePos == "bottom") { + left = (boundPos.left + boundPos.width / 2) - (width / 2); + top = boundPos.top - 10 - height; + } + top = Math.min(windowHeight - 10 - height, Math.max(10, top)); + win.css({ + top: top + "px", + left: left + "px" + }); + if (win.hasClass("togetherjs-window")) { + $("#togetherjs-window-pointer-right, #togetherjs-window-pointer-left").hide(); + var pointer = $("#togetherjs-window-pointer-" + ifacePos); + pointer.show(); + if (ifacePos == "right") { + pointer.css({ + top: boundPos.top + Math.floor(boundPos.height / 2) + "px", + left: left + win.width() + 9 + "px" + }); + } else if (ifacePos == "left") { + pointer.css({ + top: boundPos.top + Math.floor(boundPos.height / 2) + "px", + left: (left - 5) + "px" + }); + } else { + console.warn("don't know how to deal with position:", ifacePos); + } + } + win.data("boundTo", bound.selector || "#" + bound.attr("id")); + bound.addClass("togetherjs-active"); + } + + session.on("resize", function () { + var win = $(".togetherjs-modal:visible, .togetherjs-window:visible"); + if (! win.length) { + return; + } + var boundTo = win.data("boundTo"); + if (! boundTo) { + return; + } + boundTo = $(boundTo); + bind(win, boundTo); + }); + + windowing.hide = function (els) { + // FIXME: also hide modals? + els = els || ".togetherjs-window, .togetherjs-modal, .togetherjs-notification"; + els = $(els); + els = els.filter(":visible"); + els.filter(":not(.togetherjs-notification)").hide(); + getModalBackground().hide(); + var windows = []; + els.each(function (index, element) { + element = $(element); + windows.push(element); + var bound = element.data("boundTo"); + if (! bound) { + return; + } + bound = $(bound); + bound.addClass("togetherjs-animated").addClass("togetherjs-color-pulse"); + setTimeout(function () { + bound.removeClass("togetherjs-color-pulse").removeClass("togetherjs-animated"); + }, ANIMATION_DURATION+10); + element.data("boundTo", null); + bound.removeClass("togetherjs-active"); + if (element.hasClass("togetherjs-notification")) { + element.fadeOut().promise().then(function () { + this.hide(); + }); + } + }); + $("#togetherjs-window-pointer-right, #togetherjs-window-pointer-left").hide(); + if (onClose) { + onClose(); + onClose = null; + } + if (windows.length) { + session.emit("hide-window", windows); + } + }; + + windowing.showNotification = function (element, options) { + element = $(element); + options = options || {}; + assert(false); + }; + + windowing.toggle = function (el) { + el = $(el); + if (el.is(":visible")) { + windowing.hide(el); + } else { + windowing.show(el); + } + }; + + function bindEvents(el) { + el.find(".togetherjs-close, .togetherjs-dismiss").click(function (event) { + var w = $(event.target).closest(".togetherjs-window, .togetherjs-modal, .togetherjs-notification"); + windowing.hide(w); + event.stopPropagation(); + return false; + }); + } + + function getModalBackground() { + if (getModalBackground.element) { + return getModalBackground.element; + } + var background = $("#togetherjs-modal-background"); + assert(background.length); + getModalBackground.element = background; + background.click(function () { + windowing.hide(); + }); + return background; + } + + var modalEscape = { + bind: function () { + $(document).keydown(modalEscape.onKeydown); + }, + unbind: function () { + $(document).unbind("keydown", modalEscape.onKeydown); + }, + onKeydown: function (event) { + if (event.which == 27) { + windowing.hide(); + } + } + }; + + session.on("close", function () { + modalEscape.unbind(); + }); + + session.on("new-element", function (el) { + bindEvents(el); + }); + + return windowing; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define('templating',["jquery", "util", "peers", "windowing", "session"], function ($, util, peers, windowing, session) { + var assert = util.assert; + var templating = util.Module("templating"); + + templating.clone = function (templateId) { + templateId = "#togetherjs-template-" + templateId; + var template = $(templateId); + assert(template.length, "No template found with id:", templateId); + template = template.clone(); + template.attr("id", null); + // FIXME: if called directly, doesn't emit new-element event: + return template; + }; + + templating.sub = function (templateId, variables) { + var template = templating.clone(templateId); + variables = variables || {}; + util.forEachAttr(variables, function (value, attr) { + // FIXME: do the substitution... somehow? + var subs = template.find(".togetherjs-sub-" + attr).removeClass("togetherjs-sub-" + attr); + if (subs.length) { + if (typeof value == "string") { + subs.text(value); + } else if (value instanceof $) { + subs.append(value); + } else { + assert(false, "Unknown variable value type:", attr, "=", value); + } + } + var ifs = template.find(".togetherjs-if-" + attr).removeClass("togetherjs-sub-" + attr); + if (! value) { + ifs.hide(); + } + ifs = template.find(".togetherjs-ifnot-" + attr).removeClass("togetherjs-ifnot-" + attr); + if (value) { + ifs.hide(); + } + var attrName = "data-togetherjs-subattr-" + attr; + var attrs = template.find("[" + attrName + "]"); + attrs.each(function (index, element) { + assert(typeof value == "string"); + element = $(element); + var subAttribute = element.attr(attrName); + element.attr(attrName, null); + element.attr(subAttribute, value); + }); + }); + if (variables.peer) { + variables.peer.view.setElement(template); + } + if (variables.date) { + var date = variables.date; + if (typeof date == "number") { + date = new Date(date); + } + var ampm = "AM"; + var hour = date.getHours(); + if (hour > 12) { + hour -= 12; + ampm = "PM"; + } + var minute = date.getMinutes(); + var t = hour + ":"; + if (minute < 10) { + t += "0"; + } + t += minute; + template.find(".togetherjs-time").text(t); + template.find(".togetherjs-ampm").text(ampm); + } + + // FIXME: silly this is on session: + session.emit("new-element", template); + return template; + }; + + return templating; +}); + +define('linkify',[], function () { + // FIXME: this could be moved to a different module, it's pretty stand-alone + /* Finds any links in the text of an element (or its children) and turns them + into anchors (with target=_blank) */ + function linkify(el) { + if (el.jquery) { + el = el[0]; + } + el.normalize(); + function linkifyNode(node) { + var _len = node.childNodes.length; + for (var i=0; i<_len; i++) { + if (node.childNodes[i].nodeType == document.ELEMENT_NODE) { + linkifyNode(node.childNodes[i]); + } + } + var texts = []; + for (i=0; i<_len; i++) { + if (node.childNodes[i].nodeType == document.TEXT_NODE) { + texts.push(node.childNodes[i]); + } + } + texts.forEach(function (item) { + if (item.nodeType == document.ELEMENT_NODE) { + linkifyNode(item); + } else if (item.nodeType == document.TEXT_NODE) { + while (true) { + var text = item.nodeValue; + var regex = /\bhttps?:\/\/[a-z0-9\.\-_](:\d+)?[^ \n\t<>()\[\]]*/i; + var match = regex.exec(text); + if (! match) { + break; + } + var leadingNode = document.createTextNode(text.substr(0, match.index)); + node.replaceChild(leadingNode, item); + var anchor = document.createElement("a"); + anchor.setAttribute("target", "_blank"); + anchor.href = match[0]; + anchor.appendChild(document.createTextNode(match[0])); + node.insertBefore(anchor, leadingNode.nextSibling); + var trailing = document.createTextNode(text.substr(match.index + match[0].length)); + node.insertBefore(trailing, anchor.nextSibling); + item = trailing; + } + } + }); + } + linkifyNode(el); + return el; + } + + return linkify; +}); + +// TinyColor v0.9.13 +// https://github.com/bgrins/TinyColor +// 2012-11-28, Brian Grinstead, MIT License + +(function(root) { + +var trimLeft = /^[\s,#]+/, + trimRight = /\s+$/, + tinyCounter = 0, + math = Math, + mathRound = math.round, + mathMin = math.min, + mathMax = math.max, + mathRandom = math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + + // If input is already a tinycolor, return itself + if (typeof color == "object" && color.hasOwnProperty("_tc_id")) { + return color; + } + + var rgb = inputToRGB(color); + var r = rgb.r, + g = rgb.g, + b = rgb.b, + a = rgb.a, + roundA = mathRound(100*a) / 100, + format = rgb.format; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (r < 1) { r = mathRound(r); } + if (g < 1) { g = mathRound(g); } + if (b < 1) { b = mathRound(b); } + + return { + ok: rgb.ok, + format: format, + _tc_id: tinyCounter++, + alpha: a, + toHsv: function() { + var hsv = rgbToHsv(r, g, b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(r, g, b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(r, g, b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a }; + }, + toHslString: function() { + var hsl = rgbToHsl(r, g, b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ roundA + ")"; + }, + toHex: function() { + return rgbToHex(r, g, b); + }, + toHexString: function() { + return '#' + rgbToHex(r, g, b); + }, + toRgb: function() { + return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a }; + }, + toRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" : + "rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(r, 255) * 100) + "%", g: mathRound(bound01(g, 255) * 100) + "%", b: mathRound(bound01(b, 255) * 100) + "%", a: a }; + }, + toPercentageRgbString: function() { + return (a == 1) ? + "rgb(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%, " + roundA + ")"; + }, + toName: function() { + return hexNames[rgbToHex(r, g, b)] || false; + }, + toFilter: function() { + var hex = rgbToHex(r, g, b); + var secondHex = hex; + var alphaHex = Math.round(parseFloat(a) * 255).toString(16); + var secondAlphaHex = alphaHex; + var gradientType = opts && opts.gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex = s.toHex(); + secondAlphaHex = Math.round(parseFloat(s.alpha) * 255).toString(16); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr=#" + pad2(alphaHex) + hex + ",endColorstr=#" + pad2(secondAlphaHex) + secondHex + ")"; + }, + toString: function(format) { + format = format || this.format; + var formattedString = false; + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex") { + formattedString = this.toHexString(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + } + }; +} + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + newColor[i] = convertToPercentage(color[i]); + } + color = newColor; + } + + return tinycolor(color); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 255, g: 255, b: 255 }; + var a = 1; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { + color.s = convertToPercentage(color.s); + color.v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, color.s, color.v); + ok = true; + format = "hsv"; + } + else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { + color.s = convertToPercentage(color.s); + color.l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, color.s, color.l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = parseFloat(a); + + // Handle invalid alpha characters by setting to 1 + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b) { + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + + +tinycolor.desaturate = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.s -= ((amount || 10) / 100); + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +}; +tinycolor.saturate = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.s += ((amount || 10) / 100); + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +}; +tinycolor.greyscale = function(color) { + return tinycolor.desaturate(color, 100); +}; +tinycolor.lighten = function(color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.l += ((amount || 10) / 100); + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +}; +tinycolor.darken = function (color, amount) { + var hsl = tinycolor(color).toHsl(); + hsl.l -= ((amount || 10) / 100); + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +}; +tinycolor.complement = function(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +}; + + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +tinycolor.triad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +}; +tinycolor.tetrad = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +}; +tinycolor.splitcomplement = function(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +}; +tinycolor.analogous = function(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +}; +tinycolor.monochromatic = function(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +}; +// Readability based on W3C recommendations: http://www.w3.org/TR/AERT#color-contrast +// Returns object with two properties: +// .brightness: the difference in brightness between the two colors +// .color: the difference in color/hue between the two colors +// An "acceptable" color is considered to have a brightness difference of 125 and a +// color difference of 500 +tinycolor.readability = function(color1, color2) { + var a = tinycolor(color1).toRgb(), b = tinycolor(color2).toRgb(); + var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000; + var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000; + var colorDiff = ( + Math.max(a.r, b.r) - Math.min(a.r, b.r) + + Math.max(a.g, b.g) - Math.min(a.g, b.g) + + Math.max(a.b, b.b) - Math.min(a.b, b.b)); + return { + brightness: Math.abs(brightnessA - brightnessB), + color: colorDiff + }; +}; +// True if using color1 over color2 (or vice versa) is "readable" +// Based on: http://www.w3.org/TR/AERT#color-contrast +// Example: +// tinycolor.readable("#000", "#111") => false +tinycolor.readable = function(color1, color2) { + var readability = tinycolor.readability(color1, color2); + return readability.brightness > 125 && readability.color > 500; +}; +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Example: +// tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" +tinycolor.mostReadable = function(baseColor, colorList) { + var bestColor; + var bestScore = 0; + var bestIsReadable = false; + for (var i=0; i < colorList.length; i++) { + var readability = tinycolor.readability(baseColor, colorList[i]); + var readable = readability.brightness > 125 && readability.color > 500; + // We normalize both around the "acceptable" breaking point, + // but rank brightness constrast higher than hue. Why? I'm + // not sure, seems reasonable. + var score = 3 * (readability.brightness / 125) + (readability.color / 500); + if ((readable && ! bestIsReadable) || + (readable && bestIsReadable && score > bestScore) || + ((! readable) && (! bestIsReadable) && score > bestScore)) { + bestIsReadable = readable; + bestScore = score; + bestColor = colorList[i]; + } + } + return bestColor; +}; + + +// Big List of Colors +// --------- +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse an integer into hex +function parseHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0 }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseHex(match[1]), + g: parseHex(match[2]), + b: parseHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseHex(match[1] + '' + match[1]), + g: parseHex(match[2] + '' + match[2]), + b: parseHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define !== "undefined") { + define('tinycolor',[],function () {return tinycolor;}); +} +// Browser: Expose to window +else { + root.tinycolor = tinycolor; +} + +})(this); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('elementFinder',["util", "jquery"], function (util, $) { + var elementFinder = util.Module("elementFinder"); + var assert = util.assert; + + elementFinder.ignoreElement = function ignoreElement(el) { + if (el instanceof $) { + el = el[0]; + } + while (el) { + if ($(el).hasClass("togetherjs")) { + return true; + } + el = el.parentNode; + } + return false; + }; + + elementFinder.elementLocation = function elementLocation(el) { + assert(el !== null, "Got null element"); + if (el instanceof $) { + // a jQuery element + el = el[0]; + } + if (el[0] && el.attr && el[0].nodeType == 1) { + // Or a jQuery element not made by us + el = el[0]; + } + if (el.id) { + return "#" + el.id; + } + if (el.tagName == "BODY") { + return "body"; + } + if (el.tagName == "HEAD") { + return "head"; + } + if (el === document) { + return "document"; + } + var parent = el.parentNode; + if ((! parent) || parent == el) { + console.warn("elementLocation(", el, ") has null parent"); + throw new Error("No locatable parent found"); + } + var parentLocation = elementLocation(parent); + var children = parent.childNodes; + var _len = children.length; + var index = 0; + for (var i=0; i<_len; i++) { + if (children[i] == el) { + break; + } + if (children[i].nodeType == document.ELEMENT_NODE) { + if (children[i].className.indexOf("togetherjs") != -1) { + // Don't count our UI + continue; + } + // Don't count text or comments + index++; + } + } + return parentLocation + ":nth-child(" + (index+1) + ")"; + }; + + elementFinder.CannotFind = util.Class({ + constructor: function CannotFind(location, reason, context) { + this.prefix = ""; + this.location = location; + this.reason = reason; + this.context = context; + }, + toString: function () { + var loc; + try { + loc = elementFinder.elementLocation(this.context); + } catch (e) { + loc = this.context; + } + return ( + "[CannotFind " + this.prefix + + "(" + this.location + "): " + + this.reason + " in " + + loc + "]"); + } + }); + + elementFinder.findElement = function findElement(loc, container) { + // FIXME: should this all just be done with document.querySelector()? + // But no! We can't ignore togetherjs elements with querySelector. + // But maybe! We *could* make togetherjs elements less obtrusive? + container = container || document; + var el, rest; + if (loc === "body") { + return document.body; + } else if (loc === "head") { + return document.head; + } else if (loc === "document") { + return document; + } else if (loc.indexOf("body") === 0) { + el = document.body; + try { + return findElement(loc.substr(("body").length), el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "body" + e.prefix; + } + throw e; + } + } else if (loc.indexOf("head") === 0) { + el = document.head; + try { + return findElement(loc.substr(("head").length), el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "head" + e.prefix; + } + throw e; + } + } else if (loc.indexOf("#") === 0) { + var id; + loc = loc.substr(1); + if (loc.indexOf(":") === -1) { + id = loc; + rest = ""; + } else { + id = loc.substr(0, loc.indexOf(":")); + rest = loc.substr(loc.indexOf(":")); + } + el = document.getElementById(id); + if (! el) { + throw elementFinder.CannotFind("#" + id, "No element by that id", container); + } + if (rest) { + try { + return findElement(rest, el); + } catch (e) { + if (e instanceof elementFinder.CannotFind) { + e.prefix = "#" + id + e.prefix; + } + throw e; + } + } else { + return el; + } + } else if (loc.indexOf(":nth-child(") === 0) { + loc = loc.substr((":nth-child(").length); + if (loc.indexOf(")") == -1) { + throw "Invalid location, missing ): " + loc; + } + var num = loc.substr(0, loc.indexOf(")")); + num = parseInt(num, 10); + var count = num; + loc = loc.substr(loc.indexOf(")") + 1); + var children = container.childNodes; + el = null; + for (var i=0; i height) { + return false; + } + last = el; + }); + if ((! children.length) || (! last)) { + // There are no children, or only inapplicable children + return { + location: elementFinder.elementLocation(start[0]), + offset: height - start.offset().top, + absoluteTop: height, + documentHeight: $(document).height() + }; + } + return search(last, height); + } + return search($(document.body), height); + }; + + elementFinder.pixelForPosition = function (position) { + /* Inverse of elementFinder.elementByPixel */ + if (position.location == "body") { + return position.offset; + } + var el; + try { + el = elementFinder.findElement(position.location); + } catch (e) { + if (e instanceof elementFinder.CannotFind && position.absoluteTop) { + // We don't trust absoluteTop to be quite right locally, so we adjust + // for the total document height differences: + var percent = position.absoluteTop / position.documentHeight; + return $(document).height() * percent; + } + throw e; + } + var top = $(el).offset().top; + // FIXME: maybe here we should test for sanity, like if an element is + // hidden. We can use position.absoluteTop to get a sense of where the + // element roughly should be. If the sanity check failed we'd use + // absoluteTop + return top + position.offset; + }; + + return elementFinder; + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* Loading this module will cause, when TogetherJS is active, the + session object to emit visibility-change with a `hidden` argument + whenever the visibility changes, on browsers where we can detect + it. + */ + +define('visibilityApi',["util", "session"], function (util, session) { + var visibilityApi = util.Module("visibilityApi"); + var hidden; + var visibilityChange; + if (document.hidden !== undefined) { // Opera 12.10 and Firefox 18 and later support + hidden = "hidden"; + visibilityChange = "visibilitychange"; + } else if (document.mozHidden !== undefined) { + hidden = "mozHidden"; + visibilityChange = "mozvisibilitychange"; + } else if (document.msHidden !== undefined) { + hidden = "msHidden"; + visibilityChange = "msvisibilitychange"; + } else if (document.webkitHidden !== undefined) { + hidden = "webkitHidden"; + visibilityChange = "webkitvisibilitychange"; + } + + session.on("start", function () { + document.addEventListener(visibilityChange, change, false); + }); + + session.on("close", function () { + document.removeEventListener(visibilityChange, change, false); + }); + + function change() { + session.emit("visibility-change", document[hidden]); + } + + visibilityApi.hidden = function () { + return document[hidden]; + }; + + return visibilityApi; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('ui',["require", "jquery", "util", "session", "templates", "templating", "linkify", "peers", "windowing", "tinycolor", "elementFinder", "visibilityApi"], function (require, $, util, session, templates, templating, linkify, peers, windowing, tinycolor, elementFinder, visibilityApi) { + var ui = util.Module('ui'); + var assert = util.assert; + var AssertionError = util.AssertionError; + var chat; + var $window = $(window); + // This is also in togetherjs.less, as @button-height: + var BUTTON_HEIGHT = 60 + 1; // 60 is button height, 1 is border + // chat TextArea + var TEXTAREA_LINE_HEIGHT = 20; // in pixels + var TEXTAREA_MAX_LINES = 5; + // This is also in togetherjs.less, under .togetherjs-animated + var ANIMATION_DURATION = 1000; + // Time the new user window sticks around until it fades away: + var NEW_USER_FADE_TIMEOUT = 5000; + // This is set when an animation will keep the UI from being ready + // (until this time): + var finishedAt = null; + // Time in milliseconds for the dock to animate out: + var DOCK_ANIMATION_TIME = 300; + // If two chat messages come from the same person in this time + // (milliseconds) then they are collapsed into one message: + var COLLAPSE_MESSAGE_LIMIT = 5000; + + var COLORS = [ + "#8A2BE2", "#7FFF00", "#DC143C", "#00FFFF", "#8FBC8F", "#FF8C00", "#FF00FF", + "#FFD700", "#F08080", "#90EE90", "#FF6347"]; + + // This would be a circular import, but we just need the chat module sometime + // after everything is loaded, and this is sure to complete by that time: + require(["chat"], function (c) { + chat = c; + }); + + /* Displays some toggleable element; toggleable elements have a + data-toggles attribute that indicates what other elements should + be hidden when this element is shown. */ + ui.displayToggle = function (el) { + el = $(el); + assert(el.length, "No element", arguments[0]); + var other = $(el.attr("data-toggles")); + assert(other.length, "Cannot toggle", el[0], "selector", other.selector); + other.hide(); + el.show(); + }; + + function panelPosition() { + var iface = $("#togetherjs-dock"); + if (iface.hasClass("togetherjs-dock-right")) { + return "right"; + } else if (iface.hasClass("togetherjs-dock-left")) { + return "left"; + } else if (iface.hasClass("togetherjs-dock-bottom")) { + return "bottom"; + } else { + throw new AssertionError("#togetherjs-dock doesn't have positioning class"); + } + } + + ui.container = null; + + // This is used for some signalling when ui.prepareUI and/or + // ui.activateUI is called before the DOM is fully loaded: + var deferringPrepareUI = null; + + function deferForContainer(func) { + /* Defers any calls to func() until after ui.container is set + Function cannot have a return value (as sometimes the call will + become async). Use like: + + method: deferForContainer(function (args) {...}) + */ + return function () { + if (ui.container) { + func.apply(this, arguments); + } + var self = this; + var args = Array.prototype.slice.call(arguments); + session.once("ui-ready", function () { + func.apply(self, args); + }); + }; + } + + // This is called before activateUI; it doesn't bind anything, but does display + // the dock + // FIXME: because this module has lots of requirements we can't do + // this before those requirements are loaded. Maybe worth splitting + // this out? OTOH, in production we should have all the files + // combined so there's not much problem loading those modules. + ui.prepareUI = function () { + if (! (document.readyState == "complete" || document.readyState == "interactive")) { + // Too soon! Wait a sec... + deferringPrepareUI = "deferring"; + document.addEventListener("DOMContentLoaded", function () { + var d = deferringPrepareUI; + deferringPrepareUI = null; + ui.prepareUI(); + // This happens when ui.activateUI is called before the document has been + // loaded: + if (d == "activate") { + ui.activateUI(); + } + }); + return; + } + var container = ui.container = $(templates("interface")); + assert(container.length); + $("body").append(container); + fixupAvatars(container); + if (session.firstRun && TogetherJS.startTarget) { + // Time at which the UI will be fully ready: + // (We have to do this because the offset won't be quite right + // until the animation finishes - attempts to calculate the + // offset without taking into account CSS transforms have so far + // failed.) + var timeoutSeconds = DOCK_ANIMATION_TIME / 1000; + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 50; + setTimeout(function () { + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 40; + var iface = container.find("#togetherjs-dock"); + var start = iface.offset(); + var pos = $(TogetherJS.startTarget).offset(); + pos.top = Math.floor(pos.top - start.top); + pos.left = Math.floor(pos.left - start.left); + var translate = "translate(" + pos.left + "px, " + pos.top + "px)"; + iface.css({ + MozTransform: translate, + WebkitTransform: translate, + transform: translate, + opacity: "0.0" + }); + setTimeout(function () { + // We keep recalculating because the setTimeout times aren't always so accurate: + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 20; + var transition = "transform " + timeoutSeconds + "s ease-out, "; + transition += "opacity " + timeoutSeconds + "s ease-out"; + iface.css({ + opacity: "1.0", + MozTransition: "-moz-" + transition, + MozTransform: "translate(0, 0)", + WebkitTransition: "-webkit-" + transition, + WebkitTransform: "translate(0, 0)", + transition: transition, + transform: "translate(0, 0)" + }); + setTimeout(function () { + finishedAt = null; + iface.attr("style", ""); + }, 510); + }, 5); + }, 5); + } + if (TogetherJS.startTarget) { + var el = $(TogetherJS.startTarget); + var text = el.text().toLowerCase().replace(/\s+/g, " "); + text = text.replace(/^\s*/, "").replace(/\s*$/, ""); + if (text == "start togetherjs") { + el.attr("data-end-togetherjs-html", "End TogetherJS"); + } + if (el.attr("data-end-togetherjs-html")) { + el.attr("data-start-togetherjs-html", el.html()); + el.html(el.attr("data-end-togetherjs-html")); + } + el.addClass("togetherjs-started"); + } + ui.container.find(".togetherjs-window > header, .togetherjs-modal > header").each(function () { + $(this).append($('')); + }); + + TogetherJS.config.track("disableWebRTC", function (hide, previous) { + if (hide && ! previous) { + ui.container.find("#togetherjs-audio-button").hide(); + adjustDockSize(-1); + } else if ((! hide) && previous) { + ui.container.find("#togetherjs-audio-button").show(); + adjustDockSize(1); + } + }); + + // pgbovine -- disable the user profile and "Invite a friend" link dialogs + ui.container.find("#togetherjs-profile-button").hide(); + ui.container.find("#togetherjs-share-button").hide(); + adjustDockSize(-2); + + }; + + // After prepareUI, this actually makes the interface live. We have + // to do this later because we call prepareUI when many components + // aren't initialized, so we don't even want the user to be able to + // interact with the interface. But activateUI is called once + // everything is loaded and ready for interaction. + ui.activateUI = function () { + if (deferringPrepareUI) { + console.warn("ui.activateUI called before document is ready; waiting..."); + deferringPrepareUI = "activate"; + return; + } + if (! ui.container) { + ui.prepareUI(); + } + var container = ui.container; + + //create the overlay + if($.browser.mobile) { + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: 0; background-color: rgba(0,0,0,0); width: 120%; height: 100%; z-index: 1000; margin: -10px'>\x3c/div>" ); + } + + // The share link: + ui.prepareShareLink(container); + container.find("input.togetherjs-share-link").on("keydown", function (event) { + if (event.which == 27) { + windowing.hide("#togetherjs-share"); + return false; + } + return undefined; + }); + session.on("shareId", updateShareLink); + + // The chat input element: + var input = container.find("#togetherjs-chat-input"); + input.bind("keydown", function (event) { + if (event.which == 13 && !event.shiftKey) { // Enter without Shift pressed + submitChat(); + return false; + } + if (event.which == 27) { // Escape + windowing.hide("#togetherjs-chat"); + return false; + } + }); + + function submitChat() { + var val = input.val(); + if ($.trim(val)) { + input.val(""); + // triggering the event manually to avoid the addition of newline character to the textarea: + input.trigger("input").trigger("propertychange"); + chat.submit(val); + } + } + // auto-resize textarea: + input.on("input propertychange", function () { + var $this = $(this); + var actualHeight = $this.height(); + // reset the height of textarea to remove trailing empty space (used for shrinking): + $this.height(TEXTAREA_LINE_HEIGHT); + this.scrollTop = 0; + // scroll to bottom: + this.scrollTop = 9999; + var newHeight = this.scrollTop + $this.height(); + var maxHeight = TEXTAREA_MAX_LINES * TEXTAREA_LINE_HEIGHT; + if (newHeight > maxHeight) { + newHeight = maxHeight; + this.style.overflowY = "scroll"; + } else { + this.style.overflowY = "hidden"; + } + this.style.height = newHeight + "px"; + var diff = newHeight - actualHeight; + $("#togetherjs-chat-input-box").height($("#togetherjs-chat-input-box").height() + diff); + $("#togetherjs-chat-messages").height($("#togetherjs-chat-messages").height() - diff); + return false; + }); + + util.testExpose({submitChat: submitChat}); + + // Moving the window: + // FIXME: this should probably be stickier, and not just move the window around + // so abruptly + var anchor = container.find("#togetherjs-dock-anchor"); + assert(anchor.length); + // FIXME: This is in place to temporarily disable dock dragging: + anchor = container.find("#togetherjs-dock-anchor-disabled"); + anchor.mousedown(function (event) { + var iface = $("#togetherjs-dock"); + // FIXME: switch to .offset() and pageX/Y + var startPos = panelPosition(); + function selectoff() { + return false; + } + function mousemove(event2) { + var fromRight = $window.width() + window.pageXOffset - event2.pageX; + var fromLeft = event2.pageX - window.pageXOffset; + var fromBottom = $window.height() + window.pageYOffset - event2.pageY; + // FIXME: this is to temporarily disable the bottom view: + fromBottom = 10000; + + var pos; + if (fromLeft < fromRight && fromLeft < fromBottom) { + pos = "left"; + } else if (fromRight < fromLeft && fromRight < fromBottom) { + pos = "right"; + } else { + pos = "bottom"; + } + iface.removeClass("togetherjs-dock-left"); + iface.removeClass("togetherjs-dock-right"); + iface.removeClass("togetherjs-dock-bottom"); + iface.addClass("togetherjs-dock-" + pos); + if (startPos && pos != startPos) { + windowing.hide(); + startPos = null; + } + } + $(document).bind("mousemove", mousemove); + // If you don't turn selection off it will still select text, and show a + // text selection cursor: + $(document).bind("selectstart", selectoff); + // FIXME: it seems like sometimes we lose the mouseup event, and it's as though + // the mouse is stuck down: + $(document).one("mouseup", function () { + $(document).unbind("mousemove", mousemove); + $(document).unbind("selectstart", selectoff); + }); + return false; + }); + + function openDock() { + $('.togetherjs-window').animate({ + opacity: 1 + }); + $('#togetherjs-dock-participants').animate({ + opacity: 1 + }); + $('#togetherjs-dock #togetherjs-buttons').animate({ + opacity: 1 + }); + + //for iphone + if($(window).width() < 480) { + $('.togetherjs-dock-right').animate({ + width: "204px" + }, { + duration:60, easing:"linear" + }); + } + + //for ipad + else { + $('.togetherjs-dock-right').animate({ + width: "27%" + }, { + duration:60, easing:"linear" + }); + } + + + // add bg overlay + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: -2px; background-color: rgba(0,0,0,0.5); width: 200%; height: 400%; z-index: 1000; margin: 0px;'>\x3c/div>" ); + + //disable vertical scrolling + // $("body").css({ + // "position": "fixed", + // top: 0, + // left: 0 + // }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-close.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + } + + function closeDock() { + //enable vertical scrolling + $("body").css({ + "position": "", + top: "", + left: "" + }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-open.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + + $('.togetherjs-window').animate({ + opacity: 0 + }); + $('#togetherjs-dock-participants').animate({ + opacity: 0 + }); + $('#togetherjs-dock #togetherjs-buttons').animate({ + opacity: 0 + }); + $('.togetherjs-dock-right').animate({ + width: "40px" + }, { + duration:60, easing:"linear" + }); + + // remove bg overlay + //$(".overlay").remove(); + } + + // Setting the anchor button + dock mobile actions + if($.browser.mobile) { + + // toggle the audio button + $("#togetherjs-audio-button").click(function () { + windowing.toggle("#togetherjs-rtc-not-supported"); + }); + + // toggle the profile button + $("#togetherjs-profile-button").click(function () { + windowing.toggle("#togetherjs-menu-window"); + }); + + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: -2px; background-color: rgba(0,0,0,0.5); width: 200%; height: 400%; z-index: 1000; margin: 0px'>\x3c/div>" ); + + //disable vertical scrolling + // $("body").css({ + // "position": "fixed", + // top: 0, + // left: 0 + // }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-close.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + + $("#togetherjs-dock-anchor").toggle(function() { + closeDock(); + },function(){ + openDock(); + }); + } + + $("#togetherjs-share-button").click(function () { + windowing.toggle("#togetherjs-share"); + }); + + $("#togetherjs-profile-button").click(function (event) { + if ($.browser.mobile) { + windowing.show("#togetherjs-menu-window"); + return false; + } + toggleMenu(); + event.stopPropagation(); + return false; + }); + + $("#togetherjs-menu-feedback, #togetherjs-menu-feedback-button").click(function(){ + windowing.hide(); + hideMenu(); + windowing.show("#togetherjs-feedback-form"); + }); + + $("#togetherjs-menu-help, #togetherjs-menu-help-button").click(function () { + windowing.hide(); + hideMenu(); + require(["walkthrough"], function (walkthrough) { + windowing.hide(); + walkthrough.start(false); + }); + }); + + $("#togetherjs-menu-update-name").click(function () { + var input = $("#togetherjs-menu .togetherjs-self-name"); + input.css({ + width: $("#togetherjs-menu").width() - 32 + "px" + }); + ui.displayToggle("#togetherjs-menu .togetherjs-self-name"); + $("#togetherjs-menu .togetherjs-self-name").focus(); + }); + + $("#togetherjs-menu-update-name-button").click(function () { + windowing.show("#togetherjs-edit-name-window"); + $("#togetherjs-edit-name-window input").focus(); + }); + + $("#togetherjs-menu .togetherjs-self-name").bind("keyup change", function (event) { + console.log("alrighty", event); + if (event.which == 13) { + ui.displayToggle("#togetherjs-self-name-display"); + return; + } + var val = $("#togetherjs-menu .togetherjs-self-name").val(); + console.log("values!!", val); + if (val) { + peers.Self.update({name: val}); + } + }); + + $("#togetherjs-menu-update-avatar, #togetherjs-menu-update-avatar-button").click(function () { + hideMenu(); + windowing.show("#togetherjs-avatar-edit"); + }); + + $("#togetherjs-menu-end, #togetherjs-menu-end-button").click(function () { + hideMenu(); + windowing.show("#togetherjs-confirm-end"); + }); + + $("#togetherjs-end-session").click(function () { + session.close(); + //$(".overlay").remove(); + + }); + + $("#togetherjs-menu-update-color").click(function () { + var picker = $("#togetherjs-pick-color"); + if (picker.is(":visible")) { + picker.hide(); + return; + } + picker.show(); + bindPicker(); + picker.find(".togetherjs-swatch-active").removeClass("togetherjs-swatch-active"); + picker.find(".togetherjs-swatch[data-color=\"" + peers.Self.color + "\"]").addClass("togetherjs-swatch-active"); + }); + + $("#togetherjs-pick-color").click(".togetherjs-swatch", function (event) { + var swatch = $(event.target); + var color = swatch.attr("data-color"); + peers.Self.update({ + color: color + }); + event.stopPropagation(); + return false; + }); + + $("#togetherjs-pick-color").click(function (event) { + $("#togetherjs-pick-color").hide(); + event.stopPropagation(); + return false; + }); + + COLORS.forEach(function (color) { + var el = templating.sub("swatch"); + el.attr("data-color", color); + var darkened = tinycolor.darken(color); + el.css({ + backgroundColor: color, + borderColor: darkened + }); + $("#togetherjs-pick-color").append(el); + }); + + $("#togetherjs-chat-button").click(function () { + windowing.toggle("#togetherjs-chat"); + }); + + session.on("display-window", function (id, element) { + if (id == "togetherjs-chat") { + if (! $.browser.mobile) { + $("#togetherjs-chat-input").focus(); + } + } else if (id == "togetherjs-share") { + var link = element.find("input.togetherjs-share-link"); + if (link.is(":visible")) { + link.focus().select(); + } + } + }); + + container.find("#togetherjs-chat-notifier").click(function (event) { + if ($(event.target).is("a") || container.is(".togetherjs-close")) { + return; + } + windowing.show("#togetherjs-chat"); + }); + + // FIXME: Don't think this makes sense + $(".togetherjs header.togetherjs-title").each(function (index, item) { + var button = $(''); + button.click(function (event) { + var window = button.closest(".togetherjs-window"); + windowing.hide(window); + }); + $(item).append(button); + }); + + $("#togetherjs-avatar-done").click(function () { + ui.displayToggle("#togetherjs-no-avatar-edit"); + }); + + $("#togetherjs-self-color").css({backgroundColor: peers.Self.color}); + + var avatar = peers.Self.avatar; + if (avatar) { + $("#togetherjs-self-avatar").attr("src", avatar); + } + + var starterButton = $("#togetherjs-starter button"); + starterButton.click(function () { + windowing.show("#togetherjs-about"); + }).addClass("togetherjs-running"); + if (starterButton.text() == "Start TogetherJS") { + starterButton.attr("data-start-text", starterButton.text()); + starterButton.text("End TogetherJS Session"); + } + + ui.activateAvatarEdit(container, { + onSave: function () { + windowing.hide("#togetherjs-avatar-edit"); + } + }); + + TogetherJS.config.track("inviteFromRoom", function (inviter, previous) { + if (inviter) { + container.find("#togetherjs-invite").show(); + } else { + container.find("#togetherjs-invite").hide(); + } + }); + + container.find("#togetherjs-menu-refresh-invite").click(refreshInvite); + container.find("#togetherjs-menu-invite-anyone").click(function () { + invite(null); + }); + + // The following lines should be at the end of this function + // (new code goes above) + session.emit("new-element", ui.container); + + if (finishedAt && finishedAt > Date.now()) { + setTimeout(function () { + finishedAt = null; + session.emit("ui-ready", ui); + }, finishedAt - Date.now()); + } else { + session.emit("ui-ready", ui); + } + + }; // End ui.activateUI() + + ui.activateAvatarEdit = function (container, options) { + options = options || {}; + var pendingImage = null; + + container.find(".togetherjs-avatar-save").prop("disabled", true); + + container.find(".togetherjs-avatar-save").click(function () { + if (pendingImage) { + peers.Self.update({avatar: pendingImage}); + container.find(".togetherjs-avatar-save").prop("disabled", true); + if (options.onSave) { + options.onSave(); + } + } + }); + + container.find(".togetherjs-upload-avatar").on("change", function () { + util.readFileImage(this).then(function (url) { + sizeDownImage(url).then(function (smallUrl) { + pendingImage = smallUrl; + container.find(".togetherjs-avatar-preview").css({ + backgroundImage: 'url(' + pendingImage + ')' + }); + container.find(".togetherjs-avatar-save").prop("disabled", false); + if (options.onPending) { + options.onPending(); + } + }); + }); + }); + + }; + + function sizeDownImage(imageUrl) { + return util.Deferred(function (def) { + var $canvas = $(""); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + var img = new Image(); + img.src = imageUrl; + // Sometimes the DOM updates immediately to call + // naturalWidth/etc, and sometimes it doesn't; using setTimeout + // gives it a chance to catch up + setTimeout(function () { + var width = img.naturalWidth || img.width; + var height = img.naturalHeight || img.height; + width = width * (session.AVATAR_SIZE / height); + height = session.AVATAR_SIZE; + context.drawImage(img, 0, 0, width, height); + def.resolve($canvas[0].toDataURL("image/png")); + }); + }); + } + + function fixupAvatars(container) { + /* All
      elements need an element inside, + so we add that element here */ + container.find(".togetherjs-person").each(function () { + var $this = $(this); + var inner = $this.find(".togetherjs-person-avatar-swatch"); + if (! inner.length) { + $this.append('
      '); + } + }); + } + + ui.prepareShareLink = function (container) { + container.find("input.togetherjs-share-link").click(function () { + $(this).select(); + }).change(function () { + updateShareLink(); + }); + container.find("a.togetherjs-share-link").click(function () { + // FIXME: this is currently opening up Bluetooth, not sharing a link + if (false && window.MozActivity) { + var activity = new MozActivity({ + name: "share", + data: { + type: "url", + url: $(this).attr("href") + } + }); + } + // FIXME: should show some help if you actually try to follow the link + // like this, instead of simply suppressing it + return false; + }); + updateShareLink(); + }; + + // Menu + + function showMenu(event) { + var el = $("#togetherjs-menu"); + assert(el.length); + el.show(); + bindMenu(); + $(document).bind("click", maybeHideMenu); + } + + function bindMenu() { + var el = $("#togetherjs-menu:visible"); + if (el.length) { + var bound = $("#togetherjs-profile-button"); + var boundOffset = bound.offset(); + el.css({ + top: boundOffset.top + bound.height() - $window.scrollTop() + "px", + left: (boundOffset.left + bound.width() - 10 - el.width() - $window.scrollLeft()) + "px" + }); + } + } + + function bindPicker() { + var picker = $("#togetherjs-pick-color:visible"); + if (picker.length) { + var menu = $("#togetherjs-menu-update-color"); + var menuOffset = menu.offset(); + picker.css({ + top: menuOffset.top + menu.height(), + left: menuOffset.left + }); + } + } + + session.on("resize", function () { + bindMenu(); + bindPicker(); + }); + + function toggleMenu() { + if ($("#togetherjs-menu").is(":visible")) { + hideMenu(); + } else { + showMenu(); + } + } + + function hideMenu() { + var el = $("#togetherjs-menu"); + el.hide(); + $(document).unbind("click", maybeHideMenu); + ui.displayToggle("#togetherjs-self-name-display"); + $("#togetherjs-pick-color").hide(); + } + + function maybeHideMenu(event) { + var t = event.target; + while (t) { + if (t.id == "togetherjs-menu") { + // Click inside the menu, ignore this + return; + } + t = t.parentNode; + } + hideMenu(); + } + + function adjustDockSize(buttons) { + /* Add or remove spots from the dock; positive number to + add button(s), negative number to remove button(s) + */ + assert(typeof buttons == "number"); + assert(buttons && Math.floor(buttons) == buttons); + var iface = $("#togetherjs-dock"); + var newHeight = iface.height() + (BUTTON_HEIGHT * buttons); + // pgbovine - set the lower limit to 1 instead of 3 ... + assert(newHeight >= BUTTON_HEIGHT * 1, "Height went too low (", newHeight, + "), should never be less than 2 buttons high (", BUTTON_HEIGHT * 1, ")"); + //assert(newHeight >= BUTTON_HEIGHT * 3, "Height went too low (", newHeight, + // "), should never be less than 3 buttons high (", BUTTON_HEIGHT * 3, ")"); + iface.css({ + height: newHeight + "px" + }); + } + + // Misc + + function updateShareLink() { + var input = $("input.togetherjs-share-link"); + var link = $("a.togetherjs-share-link"); + var display = $("#togetherjs-session-id"); + if (! session.shareId) { + input.val(""); + link.attr("href", "#"); + display.text("(none)"); + } else { + input.val(session.shareUrl()); + link.attr("href", session.shareUrl()); + display.text(session.shareId); + } + } + + session.on("close", function () { + + if($.browser.mobile) { + // remove bg overlay + //$(".overlay").remove(); + + //after hitting End, reset window draggin + $("body").css({ + "position": "", + top: "", + left: "" + }); + + } + + if (ui.container) { + ui.container.remove(); + ui.container = null; + } + // Clear out any other spurious elements: + $(".togetherjs").remove(); + var starterButton = $("#togetherjs-starter button"); + starterButton.removeClass("togetherjs-running"); + if (starterButton.attr("data-start-text")) { + starterButton.text(starterButton.attr("data-start-text")); + starterButton.attr("data-start-text", ""); + } + if (TogetherJS.startTarget) { + var el = $(TogetherJS.startTarget); + if (el.attr("data-start-togetherjs-html")) { + el.html(el.attr("data-start-togetherjs-html")); + } + el.removeClass("togetherjs-started"); + } + }); + + ui.chat = { + text: function (attrs) { + assert(typeof attrs.text == "string"); + assert(attrs.peer); + assert(attrs.messageId); + var date = attrs.date || Date.now(); + var lastEl = ui.container.find("#togetherjs-chat .togetherjs-chat-message"); + if (lastEl.length) { + lastEl = $(lastEl[lastEl.length-1]); + } + var lastDate = null; + if (lastEl) { + lastDate = parseInt(lastEl.attr("data-date"), 10); + } + if (lastEl && lastEl.attr("data-person") == attrs.peer.id && + lastDate && date < lastDate + COLLAPSE_MESSAGE_LIMIT) { + lastEl.attr("data-date", date); + var content = lastEl.find(".togetherjs-chat-content"); + assert(content.length); + attrs.text = content.text() + "\n" + attrs.text; + attrs.messageId = lastEl.attr("data-message-id"); + lastEl.remove(); + } + var el = templating.sub("chat-message", { + peer: attrs.peer, + content: attrs.text, + date: date + }); + linkify(el.find(".togetherjs-chat-content")); + el.attr("data-person", attrs.peer.id) + .attr("data-date", date) + .attr("data-message-id", attrs.messageId); + ui.chat.add(el, attrs.messageId, attrs.notify); + }, + + joinedSession: function (attrs) { + assert(attrs.peer); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-joined", { + peer: attrs.peer, + date: date + }); + // FIXME: should bind the notification to the dock location + ui.chat.add(el, attrs.peer.className("join-message-"), 4000); + }, + + leftSession: function (attrs) { + assert(attrs.peer); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-left", { + peer: attrs.peer, + date: date, + declinedJoin: attrs.declinedJoin + }); + // FIXME: should bind the notification to the dock location + ui.chat.add(el, attrs.peer.className("join-message-"), 4000); + }, + + system: function (attrs) { + assert(! attrs.peer); + assert(typeof attrs.text == "string"); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-system", { + content: attrs.text, + date: date + }); + ui.chat.add(el, undefined, true); + }, + + clear: deferForContainer(function () { + var container = ui.container.find("#togetherjs-chat-messages"); + container.empty(); + }), + + urlChange: function (attrs) { + assert(attrs.peer); + assert(typeof attrs.url == "string"); + assert(typeof attrs.sameUrl == "boolean"); + var messageId = attrs.peer.className("url-change-"); + // FIXME: duplicating functionality in .add(): + var realId = "togetherjs-chat-" + messageId; + var date = attrs.date || Date.now(); + var title; + // FIXME: strip off common domain from msg.url? E.g., if I'm on + // http://example.com/foobar, and someone goes to http://example.com/baz then + // show only /baz + // FIXME: truncate long titles + if (attrs.title) { + title = attrs.title + " (" + attrs.url + ")"; + } else { + title = attrs.url; + } + var el = templating.sub("url-change", { + peer: attrs.peer, + date: date, + href: attrs.url, + title: title, + sameUrl: attrs.sameUrl + }); + el.find(".togetherjs-nudge").click(function () { + attrs.peer.nudge(); + return false; + }); + el.find(".togetherjs-follow").click(function () { + var url = attrs.peer.url; + if (attrs.peer.urlHash) { + url += attrs.peer.urlHash; + } + location.href = url; + }); + var notify = ! attrs.sameUrl; + if (attrs.sameUrl && ! $("#" + realId).length) { + // Don't bother showing a same-url notification, if no previous notification + // had been shown + return; + } + ui.chat.add(el, messageId, notify); + }, + + invite: function (attrs) { + assert(attrs.peer); + assert(typeof attrs.url == "string"); + var messageId = attrs.peer.className("invite-"); + var date = attrs.date || Date.now(); + var hrefTitle = attrs.url.replace(/\#?&togetherjs=.*/, "").replace(/^\w+:\/\//, ""); + var el = templating.sub("invite", { + peer: attrs.peer, + date: date, + href: attrs.url, + hrefTitle: hrefTitle, + forEveryone: attrs.forEveryone + }); + if (attrs.forEveryone) { + el.find("a").click(function () { + // FIXME: hacky way to do this: + chat.submit("Followed link to " + attrs.url); + }); + } + ui.chat.add(el, messageId, true); + }, + + hideTimeout: null, + + add: deferForContainer(function (el, id, notify) { + if (id) { + el.attr("id", "togetherjs-chat-" + util.safeClassName(id)); + } + var container = ui.container.find("#togetherjs-chat-messages"); + assert(container.length); + var popup = ui.container.find("#togetherjs-chat-notifier"); + container.append(el); + ui.chat.scroll(); + var doNotify = !! notify; + var section = popup.find("#togetherjs-chat-notifier-message"); + if (notify && visibilityApi.hidden()) { + ui.container.find("#togetherjs-notification")[0].play(); + } + if (id && section.data("message-id") == id) { + doNotify = true; + } + if (container.is(":visible")) { + doNotify = false; + } + if (doNotify) { + section.empty(); + section.append(el.clone(true, true)); + if (section.data("message-id") != id) { + section.data("message-id", id || ""); + windowing.show(popup); + } else if (! popup.is(":visible")) { + windowing.show(popup); + } + if (typeof notify == "number") { + // This is the amount of time we're supposed to notify + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout = null; + } + this.hideTimeout = setTimeout((function () { + windowing.hide(popup); + this.hideTimeout = null; + }).bind(this), notify); + } + } + }), + + scroll: deferForContainer(function () { + var container = ui.container.find("#togetherjs-chat-messages")[0]; + container.scrollTop = container.scrollHeight; + }) + + }; + + session.on("display-window", function (id, win) { + if (id == "togetherjs-chat") { + ui.chat.scroll(); + windowing.hide("#togetherjs-chat-notifier"); + } + }); + + /* This class is bound to peers.Peer instances as peer.view. + The .update() method is regularly called by peer objects when info changes. */ + ui.PeerView = util.Class({ + + constructor: function (peer) { + assert(peer.isSelf !== undefined, "PeerView instantiated with non-Peer object"); + this.peer = peer; + this.dockClick = this.dockClick.bind(this); + }, + + /* Takes an element and sets any person-related attributes on the element + Different from updates, which use the class names we set here: */ + setElement: function (el) { + var count = 0; + var classes = ["togetherjs-person", "togetherjs-person-status", + "togetherjs-person-name", "togetherjs-person-name-abbrev", + "togetherjs-person-bgcolor", "togetherjs-person-swatch", + "togetherjs-person-status", "togetherjs-person-role", + "togetherjs-person-url", "togetherjs-person-url-title", + "togetherjs-person-bordercolor"]; + classes.forEach(function (cls) { + var els = el.find("." + cls); + els.addClass(this.peer.className(cls + "-")); + count += els.length; + }, this); + if (! count) { + console.warn("setElement(", el, ") doesn't contain any person items"); + } + this.updateDisplay(el); + }, + + updateDisplay: deferForContainer(function (container) { + container = container || ui.container; + var abbrev = this.peer.name; + if (this.peer.isSelf) { + abbrev = "me"; + } + container.find("." + this.peer.className("togetherjs-person-name-")).text(this.peer.name || ""); + container.find("." + this.peer.className("togetherjs-person-name-abbrev-")).text(abbrev); + var avatarEl = container.find("." + this.peer.className("togetherjs-person-")); + if (this.peer.avatar) { + util.assertValidUrl(this.peer.avatar); + avatarEl.css({ + backgroundImage: "url(" + this.peer.avatar + ")" + }); + } + if (this.peer.idle == "inactive") { + avatarEl.addClass("togetherjs-person-inactive"); + } else { + avatarEl.removeClass("togetherjs-person-inactive"); + } + avatarEl.attr("title", this.peer.name); + if (this.peer.color) { + avatarEl.css({ + borderColor: this.peer.color + }); + avatarEl.find(".togetherjs-person-avatar-swatch").css({ + borderTopColor: this.peer.color, + borderRightColor: this.peer.color + }); + } + if (this.peer.color) { + var colors = container.find("." + this.peer.className("togetherjs-person-bgcolor-")); + colors.css({ + backgroundColor: this.peer.color + }); + colors = container.find("." + this.peer.className("togetherjs-person-bordercolor-")); + colors.css({ + borderColor: this.peer.color + }); + } + container.find("." + this.peer.className("togetherjs-person-role-")) + .text(this.peer.isCreator ? "Creator" : "Participant"); + var urlName = this.peer.title || ""; + if (this.peer.title) { + urlName += " ("; + } + urlName += util.truncateCommonDomain(this.peer.url, location.href); + if (this.peer.title) { + urlName += ")"; + } + container.find("." + this.peer.className("togetherjs-person-url-title-")) + .text(urlName); + var url = this.peer.url; + if (this.peer.urlHash) { + url += this.peer.urlHash; + } + container.find("." + this.peer.className("togetherjs-person-url-")) + .attr("href", url); + // FIXME: should have richer status: + container.find("." + this.peer.className("togetherjs-person-status-")) + .text(this.peer.idle == "active" ? "Active" : "Inactive"); + if (this.peer.isSelf) { + // FIXME: these could also have consistent/reliable class names: + var selfName = $(".togetherjs-self-name"); + selfName.each((function (index, el) { + el = $(el); + if (el.val() != this.peer.name) { + el.val(this.peer.name); + } + }).bind(this)); + $("#togetherjs-menu-avatar").attr("src", this.peer.avatar); + if (! this.peer.name) { + $("#togetherjs-menu .togetherjs-person-name-self").text(this.peer.defaultName); + } + } + if (this.peer.url != session.currentUrl()) { + container.find("." + this.peer.className("togetherjs-person-")) + .addClass("togetherjs-person-other-url"); + } else { + container.find("." + this.peer.className("togetherjs-person-")) + .removeClass("togetherjs-person-other-url"); + } + if (this.peer.following) { + if (this.followCheckbox) { + this.followCheckbox.prop("checked", true); + } + } else { + if (this.followCheckbox) { + this.followCheckbox.prop("checked", false); + } + } + // FIXME: add some style based on following? + updateChatParticipantList(); + this.updateFollow(); + }), + + update: function () { + if (! this.peer.isSelf) { + if (this.peer.status == "live") { + this.dock(); + } else { + this.undock(); + } + } + this.updateDisplay(); + this.updateUrlDisplay(); + }, + + updateUrlDisplay: function (force) { + var url = this.peer.url; + if ((! url) || (url == this._lastUpdateUrlDisplay && ! force)) { + return; + } + this._lastUpdateUrlDisplay = url; + var sameUrl = url == session.currentUrl(); + ui.chat.urlChange({ + peer: this.peer, + url: this.peer.url, + title: this.peer.title, + sameUrl: sameUrl + }); + }, + + urlNudge: function () { + // FIXME: do something more distinct here + this.updateUrlDisplay(true); + }, + + notifyJoined: function () { + ui.chat.joinedSession({ + peer: this.peer + }); + }, + + // when there are too many participants in the dock, consolidate the participants to one avatar, and on mouseOver, the dock expands down to reveal the rest of the participants + // if there are X users in the session + // then hide the users in the dock + // and shrink the size of the dock + // and if you rollover the dock, it expands and reveals the rest of the participants in the dock + + //if users hit X then show the participant button with the consol + + dock: deferForContainer(function () { + + var numberOfUsers = peers.getAllPeers().length; + + // collapse the Dock if too many users + function CollapsedDock() { + // decrease/reset dock height + $("#togetherjs-dock").css("height", 260); + //replace participant button + $("#togetherjs-dock-participants").replaceWith(""); + // new full participant window created on toggle + $("#togetherjs-participantlist-button").click(function () { + windowing.toggle("#togetherjs-participantlist"); + }); + } + + // FIXME: turned off for now + if( numberOfUsers >= 5 && false) { + CollapsedDock(); + } else { + // reset + + } + + + if (this.dockElement) { + return; + } + this.dockElement = templating.sub("dock-person", { + peer: this.peer + }); + this.dockElement.attr("id", this.peer.className("togetherjs-dock-element-")); + ui.container.find("#togetherjs-dock-participants").append(this.dockElement); + this.dockElement.find(".togetherjs-person").animateDockEntry(); + adjustDockSize(1); + this.detailElement = templating.sub("participant-window", { + peer: this.peer + }); + var followId = this.peer.className("togetherjs-person-status-follow-"); + this.detailElement.find('[for="togetherjs-person-status-follow"]').attr("for", followId); + this.detailElement.find('#togetherjs-person-status-follow').attr("id", followId); + this.detailElement.find(".togetherjs-follow").click(function () { + location.href = $(this).attr("href"); + }); + this.detailElement.find(".togetherjs-nudge").click((function () { + this.peer.nudge(); + }).bind(this)); + this.followCheckbox = this.detailElement.find("#" + followId); + this.followCheckbox.change(function () { + if (! this.checked) { + this.peer.unfollow(); + } + // Following doesn't happen until the window is closed + // FIXME: should we tell the user this? + }); + this.maybeHideDetailWindow = this.maybeHideDetailWindow.bind(this); + session.on("hide-window", this.maybeHideDetailWindow); + ui.container.append(this.detailElement); + this.dockElement.click((function () { + if (this.detailElement.is(":visible")) { + windowing.hide(this.detailElement); + } else { + windowing.show(this.detailElement, {bind: this.dockElement}); + this.scrollTo(); + this.cursor().element.animate({ + opacity:0.3 + }).animate({ + opacity:1 + }).animate({ + opacity:0.3 + }).animate({ + opacity:1 + }); + } + }).bind(this)); + this.updateFollow(); + }), + + undock: function () { + if (! this.dockElement) { + return; + } + this.dockElement.animateDockExit().promise().then((function () { + this.dockElement.remove(); + this.dockElement = null; + this.detailElement.remove(); + this.detailElement = null; + adjustDockSize(-1); + }).bind(this)); + }, + + scrollTo: function () { + if (this.peer.url != session.currentUrl()) { + return; + } + var pos = this.peer.scrollPosition; + if (! pos) { + console.warn("Peer has no scroll position:", this.peer); + return; + } + pos = elementFinder.pixelForPosition(pos); + $("html, body").easeTo(pos); + }, + + updateFollow: function () { + if (! this.peer.url) { + return; + } + if (! this.detailElement) { + return; + } + var same = this.detailElement.find(".togetherjs-same-url"); + var different = this.detailElement.find(".togetherjs-different-url"); + if (this.peer.url == session.currentUrl()) { + same.show(); + different.hide(); + } else { + same.hide(); + different.show(); + } + }, + + maybeHideDetailWindow: function (windows) { + if (this.detailElement && windows[0] && windows[0][0] === this.detailElement[0]) { + if (this.followCheckbox[0].checked) { + this.peer.follow(); + } else { + this.peer.unfollow(); + } + } + }, + + dockClick: function () { + // FIXME: scroll to person + }, + + cursor: function () { + return require("cursor").getClient(this.peer.id); + }, + + destroy: function () { + // FIXME: should I get rid of the dockElement? + session.off("hide-window", this.maybeHideDetailWindow); + } + }); + + function updateChatParticipantList() { + var live = peers.getAllPeers(true); + if (live.length) { + ui.displayToggle("#togetherjs-chat-participants"); + $("#togetherjs-chat-participant-list").text( + live.map(function (p) {return p.name;}).join(", ")); + } else { + ui.displayToggle("#togetherjs-chat-no-participants"); + } + } + + function inviteHubUrl() { + var base = TogetherJS.config.get("inviteFromRoom"); + assert(base); + return util.makeUrlAbsolute(base, session.hubUrl()); + } + + var inRefresh = false; + + function refreshInvite() { + if (inRefresh) { + return; + } + inRefresh = true; + require(["who"], function (who) { + var def = who.getList(inviteHubUrl()); + function addUser(user, before) { + var item = templating.sub("invite-user-item", {peer: user}); + item.attr("data-clientid", user.id); + if (before) { + item.insertBefore(before); + } else { + $("#togetherjs-invite-users").append(item); + } + item.click(function() { + invite(user.clientId); + }); + } + function refresh(users, finished) { + var sorted = []; + for (var id in users) { + if (users.hasOwnProperty(id)) { + sorted.push(users[id]); + } + } + sorted.sort(function (a, b) { + return a.name < b.name ? -1 : 1; + }); + var pos = 0; + ui.container.find("#togetherjs-invite-users .togetherjs-menu-item").each(function () { + var $this = $(this); + if (finished && ! users[$this.attr("data-clientid")]) { + $this.remove(); + return; + } + if (pos >= sorted.length) { + return; + } + while (pos < sorted.length && $this.attr("data-clientid") !== sorted[pos].id) { + addUser(sorted[pos], $this); + pos++; + } + while (pos < sorted.length && $this.attr("data-clientid") == sorted[pos].id) { + pos++; + } + }); + for (var i=pos; i= this.logs.length) { + this.unload(); + return; + } + if (this.pos !== 0) { + // First we need to play the hello + var toReplay = []; + var foundHello = false; + for (var i=this.pos-1; i>=0; i--) { + var item = this.logs[i]; + if (ALWAYS_REPLAY[item.type]) { + toReplay.push(item); + } + if (item.type == "hello" || item.type == "hello-back") { + this.playItem(item); + foundHello = true; + break; + } + } + if (! foundHello) { + console.warn("No hello message found before position", this.pos); + } + toReplay.reverse(); + for (i=0; i= this.logs.length) { + this.unload(); + return; + } + var item = this.logs[this.pos]; + this.playItem(item); + this.pos++; + if (this.pos >= this.logs.length) { + this.unload(); + return; + } + var next = this.logs[this.pos]; + var pause = next.date - item.date; + this.playTimer = setTimeout(this.playOne.bind(this), pause); + if (this.fromStorage) { + this.savePos(); + } + }, + + playItem: function (item) { + if (item.type == "hello") { + // We may need to pause here + if (item.url != (location.href+"").replace(/\#.*/, "")) { + this.pause(); + } + } + try { + session._getChannel().onmessage(item); + } catch (e) { + console.warn("Could not play back message:", item, "error:", e); + } + }, + + save: function () { + this.fromStorage = true; + storage.set("playback.logs", this.logs); + this.savePos(); + }, + + savePos: function () { + storage.set("playback.pos", this.pos); + }, + + unload: function () { + if (this.fromStorage) { + storage.set("playback.logs", undefined); + storage.set("playback.pos", undefined); + } + // FIXME: should do a bye message here + } + + }); + + playback.getRunningLogs = function () { + return storage.get("playback.logs").then(function (value) { + if (! value) { + return null; + } + var logs = Logs(value, true); + return storage.get("playback.pos").then(function (pos) { + pos = pos || 0; + logs.pos = pos; + return logs; + }); + }); + }; + + return playback; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +/*jshint evil:true */ +define('chat',["require", "jquery", "util", "session", "ui", "templates", "playback", "storage", "peers", "windowing"], function (require, $, util, session, ui, templates, playback, storage, peers, windowing) { + var chat = util.Module("chat"); + var assert = util.assert; + var Walkabout; + + session.hub.on("chat", function (msg) { + ui.chat.text({ + text: msg.text, + peer: msg.peer, + // FIXME: a little unsure of trusting this (maybe I should prefix it?) + messageId: msg.messageId, + notify: true + }); + saveChatMessage({ + text: msg.text, + date: Date.now(), + peerId: msg.peer.id, + messageId: msg.messageId + }); + }); + + // FIXME: this doesn't really belong in this module: + session.hub.on("bye", function (msg) { + ui.chat.leftSession({ + peer: msg.peer, + declinedJoin: msg.reason == "declined-join" + }); + }); + + chat.submit = function (message) { + var parts = message.split(/ /); + if (parts[0].charAt(0) == "/") { + var name = parts[0].substr(1).toLowerCase(); + var method = commands["command_" + name]; + if (method) { + method.apply(null, parts.slice(1)); + return; + } + } + var messageId = session.clientId + "-" + Date.now(); + session.send({ + type: "chat", + text: message, + messageId: messageId + }); + ui.chat.text({ + text: message, + peer: peers.Self, + messageId: messageId, + notify: false + }); + saveChatMessage({ + text: message, + date: Date.now(), + peerId: peers.Self.id, + messageId: messageId + }); + }; + + var commands = { + command_help: function () { + var msg = util.trim(templates("help")); + ui.chat.system({ + text: msg + }); + }, + + command_test: function (args) { + if (! Walkabout) { + require(["walkabout"], (function (WalkaboutModule) { + Walkabout = WalkaboutModule; + this.command_test(args); + }).bind(this)); + return; + } + args = util.trim(args || "").split(/\s+/g); + if (args[0] === "" || ! args.length) { + if (this._testCancel) { + args = ["cancel"]; + } else { + args = ["start"]; + } + } + if (args[0] == "cancel") { + ui.chat.system({ + text: "Aborting test" + }); + this._testCancel(); + this._testCancel = null; + return; + } + if (args[0] == "start") { + var times = parseInt(args[1], 10); + if (isNaN(times) || ! times) { + times = 100; + } + ui.chat.system({ + text: "Testing with walkabout.js" + }); + var tmpl = $(templates("walkabout")); + var container = ui.container.find(".togetherjs-test-container"); + container.empty(); + container.append(tmpl); + container.show(); + var statusContainer = container.find(".togetherjs-status"); + statusContainer.text("starting..."); + this._testCancel = Walkabout.runManyActions({ + ondone: function () { + statusContainer.text("done"); + statusContainer.one("click", function () { + container.hide(); + }); + this._testCancel = null; + }, + onstatus: function (status) { + var note = "actions: " + status.actions.length + " running: " + + (status.times - status.remaining) + " / " + status.times; + statusContainer.text(note); + } + }); + return; + } + if (args[0] == "show") { + if (this._testShow.length) { + this._testShow.forEach(function (item) { + if (item) { + item.remove(); + } + }, this); + this._testShow = []; + } else { + var actions = Walkabout.findActions(); + actions.forEach(function (action) { + this._testShow.push(action.show()); + }, this); + } + return; + } + if (args[0] == "describe") { + Walkabout.findActions().forEach(function (action) { + ui.chat.system({ + text: action.description() + }); + }, this); + return; + } + ui.chat.system({ + text: "Did not understand: " + args.join(" ") + }); + }, + + _testCancel: null, + _testShow: [], + + command_clear: function () { + ui.chat.clear(); + }, + + command_exec: function () { + var expr = Array.prototype.slice.call(arguments).join(" "); + var result; + // We use this to force global eval (not in this scope): + var e = eval; + try { + result = e(expr); + } catch (error) { + ui.chat.system({ + text: "Error: " + error + }); + } + if (result !== undefined) { + ui.chat.system({ + text: "" + result + }); + } + }, + + command_record: function () { + ui.chat.system({ + text: "When you see the robot appear, the recording will have started" + }); + window.open( + session.recordUrl(), "_blank", + "left,width=" + ($(window).width() / 2)); + }, + + playing: null, + + command_playback: function (url) { + if (this.playing) { + this.playing.cancel(); + this.playing.unload(); + this.playing = null; + ui.chat.system({ + text: "playback cancelled" + }); + return; + } + if (! url) { + ui.chat.system({ + text: "Nothing is playing" + }); + return; + } + var logLoader = playback.getLogs(url); + logLoader.then( + (function (logs) { + if (! logs) { + ui.chat.system({ + text: "No logs found." + }); + return; + } + logs.save(); + this.playing = logs; + logs.play(); + }).bind(this), + function (error) { + ui.chat.system({ + text: "Error fetching " + url + ":\n" + JSON.stringify(error, null, " ") + }); + }); + windowing.hide("#togetherjs-chat"); + }, + + command_savelogs: function (name) { + session.send({ + type: "get-logs", + forClient: session.clientId, + saveAs: name + }); + function save(msg) { + if (msg.request.forClient == session.clientId && msg.request.saveAs == name) { + storage.set("recording." + name, msg.logs).then(function () { + session.hub.off("logs", save); + ui.chat.system({ + text: "Saved as local:" + name + }); + }); + } + } + session.hub.on("logs", save); + }, + + command_baseurl: function (url) { + if (! url) { + storage.get("baseUrlOverride").then(function (b) { + if (b) { + ui.chat.system({ + text: "Set to: " + b.baseUrl + }); + } else { + ui.chat.system({ + text: "No baseUrl override set" + }); + } + }); + return; + } + url = url.replace(/\/*$/, ""); + ui.chat.system({ + text: "If this goes wrong, do this in the console to reset:\n localStorage.setItem('togetherjs.baseUrlOverride', null)" + }); + storage.set("baseUrlOverride", { + baseUrl: url, + expiresAt: Date.now() + (1000 * 60 * 60 * 24) + }).then(function () { + ui.chat.system({ + text: "baseUrl overridden (to " + url + "), will last for one day." + }); + }); + }, + + command_config: function (variable, value) { + if (! (variable || value)) { + storage.get("configOverride").then(function (c) { + if (c) { + util.forEachAttr(c, function (value, attr) { + if (attr == "expiresAt") { + return; + } + ui.chat.system({ + text: " " + attr + " = " + JSON.stringify(value) + }); + }); + ui.chat.system({ + text: "Config expires at " + (new Date(c.expiresAt)) + }); + } else { + ui.chat.system({ + text: "No config override" + }); + } + }); + return; + } + if (variable == "clear") { + storage.set("configOverride", undefined); + ui.chat.system({ + text: "Clearing all overridden configuration" + }); + return; + } + console.log("config", [variable, value]); + if (! (variable && value)) { + ui.chat.system({ + text: "Error: must provide /config VAR VALUE" + }); + return; + } + try { + value = JSON.parse(value); + } catch (e) { + ui.chat.system({ + text: "Error: value (" + value + ") could not be parsed: " + e + }); + return; + } + if (! TogetherJS._defaultConfiguration.hasOwnProperty(variable)) { + ui.chat.system({ + text: "Warning: variable " + variable + " is unknown" + }); + } + storage.get("configOverride").then(function (c) { + c = c || {}; + c[variable] = value; + c.expiresAt = Date.now() + (1000 * 60 * 60 * 24); + storage.set("configOverride", c).then(function () { + ui.chat.system({ + text: "Variable " + variable + " = " + JSON.stringify(value) + "\nValue will be set for one day." + }); + }); + }); + } + + }; + + // this section deal with saving/restoring chat history as long as session is alive + var chatStorageKey = "chatlog"; + var maxLogMessages = 100; + + function saveChatMessage(obj) { + assert(obj.peerId); + assert(obj.messageId); + assert(obj.date); + assert(typeof obj.text == "string"); + + loadChatLog().then(function (log) { + for (var i = log.length - 1; i >= 0; i--) { + if (log[i].messageId === obj.messageId) { + return; + } + } + log.push(obj); + if (log.length > maxLogMessages) { + log.splice(0, log.length - maxLogMessages); + } + storage.tab.set(chatStorageKey, log); + }); + } + + function loadChatLog() { + return storage.tab.get(chatStorageKey, []); + } + + session.once("ui-ready", function () { + loadChatLog().then(function (log) { + if (! log) { + return; + } + for (var i = 0; i < log.length; i++) { + // peers should already be loaded from sessionStorage by the peers module + // maybe i should use a try catch block here + var currentPeer = peers.getPeer(log[i].peerId); + ui.chat.text({ + text: log[i].text, + date: log[i].date, + peer: currentPeer, + messageId: log[i].messageId + }); + } + }); + }); + //delete chat log + session.on("close", function(){ + storage.tab.set(chatStorageKey, undefined); + }); + + return chat; + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define('console',["util"], function (util) { + + var console = window.console || {log: function () {}}; + + var Console = util.Class({ + constructor: function () { + this.messages = []; + this.level = this.levels.log; + }, + + messageLimit: 100, + + levels: { + debug: 1, + // FIXME: I'm considering *not* wrapping console.log, and strictly keeping + // it as a debugging tool; also line numbers would be preserved + log: 2, + info: 3, + notify: 4, + warn: 5, + error: 6, + fatal: 7 + }, + + // Gets set below: + maxLevel: 0, + + consoleLevels: [ + [], + console.debug || [], + console.log || [], + console.info || [], + console.notify || [], + console.warn || [], + console.error || [], + console.fatal || [] + ], + + levelNames: {}, + + setLevel: function (l) { + var number; + if (typeof l == "string") { + number = this.levels[l]; + if (number === undefined) { + throw new Error("Tried to set Console level to unknown level string: " + l); + } + l = number; + } + if (typeof l == "function") { + number = this.consoleLevels.indexOf(l); + if (number == -1) { + throw new Error("Tried to set Console level based on unknown console function: " + l); + } + l = number; + } + if (typeof l == "number") { + if (l < 0) { + throw new Error("Console level must be 0 or larger: " + l); + } else if (l > this.maxLevel) { + throw new Error("Console level must be " + this.maxLevel + " or smaller: " + l); + } + } + this.level = l; + }, + + write: function (level) { + try { + this.messages.push([ + Date.now(), + level, + this._stringify(Array.prototype.slice.call(arguments, 1)) + ]); + } catch (e) { + console.warn("Error stringifying argument:", e); + } + if (level != "suppress" && this.level <= level) { + var method = console[this.levelNames[level]]; + if (! method) { + method = console.log; + } + method.apply(console, Array.prototype.slice.call(arguments, 1)); + } + }, + + suppressedWrite: function () { + this.write.apply(this, ["suppress"].concat(Array.prototype.slice.call(arguments))); + }, + + trace: function (level) { + level = level || 'log'; + if (console.trace) { + level = "suppressedWrite"; + } + try { + throw new Error(); + } catch (e) { + // FIXME: trim this frame + var stack = e.stack; + stack = stack.replace(/^[^\n]*\n/, ""); + this[level](stack); + } + if (console.trace) { + console.trace(); + } + }, + + _browserInfo: function () { + // FIXME: add TogetherJS version and + return [ + "TogetherJS base URL: " + TogetherJS.baseUrl, + "User Agent: " + navigator.userAgent, + "Page loaded: " + this._formatDate(TogetherJS.pageLoaded), + "Age: " + this._formatMinutes(Date.now() - TogetherJS.pageLoaded) + " minutes", + // FIXME: make this right: + //"Window: height: " + window.screen.height + " width: " + window.screen.width + "URL: " + location.href, + "------+------+----------------------------------------------" + ]; + }, + + _stringify: function (args) { + var s = ""; + for (var i=0; i 10) { + // Over 10 minutes, just ignore the seconds + return m; + } + var seconds = Math.floor(remaining / 1000) + ""; + m += ":"; + seconds = lpad(seconds, 2, "0"); + m += seconds; + if (m == "0:00") { + m += ((remaining / 1000).toFixed(3) + "").substr(1); + } + return m; + }, + + _formatLevel: function (l) { + if (l === "suppress") { + return ""; + } + return this.levelNames[l]; + }, + + toString: function () { + try { + var lines = this._browserInfo(); + this.messages.forEach(function (m) { + lines.push(lpad(this._formatTime(m[0]), 6) + " " + rpad(this._formatLevel(m[1]), 6) + " " + lpadLines(m[2], 14)); + }, this); + return lines.join("\n"); + } catch (e) { + // toString errors can otherwise be swallowed: + console.warn("Error running console.toString():", e); + throw e; + } + }, + + submit: function (options) { + // FIXME: friendpaste is broken for this + // (and other pastebin sites aren't really Browser-accessible) + return util.Deferred(function (def) { + options = options || {}; + var site = options.site || TogetherJS.config.get("pasteSite") || "https://www.friendpaste.com/"; + var req = new XMLHttpRequest(); + req.open("POST", site); + req.setRequestHeader("Content-Type", "application/json"); + req.send(JSON.stringify({ + "title": options.title || "TogetherJS log file", + "snippet": this.toString(), + "language": "text" + })); + req.onreadystatechange = function () { + if (req.readyState === 4) { + var data = JSON.parse(req.responseText); + } + }; + }); + } + + }); + + function rpad(s, len, pad) { + s = s + ""; + pad = pad || " "; + while (s.length < len) { + s += pad; + } + return s; + } + + function lpad(s, len, pad) { + s = s + ""; + pad = pad || " "; + while (s.length < len) { + s = pad + s; + } + return s; + } + + function lpadLines(s, len, pad) { + var i; + s = s + ""; + if (s.indexOf("\n") == -1) { + return s; + } + pad = pad || " "; + var fullPad = ""; + for (i=0; i wTop + height - CURSOR_HEIGHT) { + top = height - CURSOR_HEIGHT - 5; + this.setClass("togetherjs-scrolled-below"); + } else { + this.setClass("togetherjs-scrolled-normal"); + } + this.element.css({ + top: top, + left: left + }); + }, + + refresh: function () { + if (this.lastTop !== null) { + this.setPosition(this.lastTop, this.lastLeft); + } + }, + + setKeydown: function () { + if (this.keydownTimeout) { + clearTimeout(this.keydownTimeout); + } else { + this.element.find(".togetherjs-cursor-typing").show().animateKeyboard(); + } + this.keydownTimeout = setTimeout(this.clearKeydown, this.KEYDOWN_WAIT_TIME); + }, + + clearKeydown: function () { + this.keydownTimeout = null; + this.element.find(".togetherjs-cursor-typing").hide().stopKeyboardAnimation(); + }, + + _destroy: function () { + this.element.remove(); + this.element = null; + } + }); + + Cursor._cursors = {}; + + cursor.getClient = Cursor.getClient = function (clientId) { + var c = Cursor._cursors[clientId]; + if (! c) { + c = Cursor._cursors[clientId] = Cursor(clientId); + } + return c; + }; + + Cursor.forEach = function (callback, context) { + context = context || null; + for (var a in Cursor._cursors) { + if (Cursor._cursors.hasOwnProperty(a)) { + callback.call(context, Cursor._cursors[a], a); + } + } + }; + + Cursor.destroy = function (clientId) { + Cursor._cursors[clientId]._destroy(); + delete Cursor._cursors[clientId]; + }; + + peers.on("new-peer identity-updated status-updated", function (peer) { + var c = Cursor.getClient(peer.id); + c.updatePeer(peer); + }); + + var lastTime = 0; + var MIN_TIME = 100; + var lastPosX = -1; + var lastPosY = -1; + var lastMessage = null; + function mousemove(event) { + var now = Date.now(); + if (now - lastTime < MIN_TIME) { + return; + } + lastTime = now; + var pageX = event.pageX; + var pageY = event.pageY; + if (Math.abs(lastPosX - pageX) < 3 && Math.abs(lastPosY - pageY) < 3) { + // Not a substantial enough change + return; + } + lastPosX = pageX; + lastPosY = pageY; + var target = event.target; + var parent = $(target).closest(".togetherjs-window, .togetherjs-popup, #togetherjs-dock"); + if (parent.length) { + target = parent[0]; + } else if (elementFinder.ignoreElement(target)) { + target = null; + } + if ((! target) || target == document.documentElement || target == document.body) { + lastMessage = { + type: "cursor-update", + top: pageY, + left: pageX + }; + session.send(lastMessage); + return; + } + target = $(target); + var offset = target.offset(); + if (! offset) { + // FIXME: this really is walkabout.js's problem to fire events on the + // document instead of a specific element + console.warn("Could not get offset of element:", target[0]); + return; + } + var offsetX = pageX - offset.left; + var offsetY = pageY - offset.top; + lastMessage = { + type: "cursor-update", + element: elementFinder.elementLocation(target), + offsetX: Math.floor(offsetX), + offsetY: Math.floor(offsetY) + }; + session.send(lastMessage); + } + + function makeCursor(color) { + var canvas = $(""); + canvas.attr("height", CURSOR_HEIGHT); + canvas.attr("width", CURSOR_WIDTH); + var context = canvas[0].getContext('2d'); + context.fillStyle = color; + context.moveTo(0, 0); + context.beginPath(); + context.lineTo(0, CURSOR_HEIGHT/1.2); + context.lineTo(Math.sin(CURSOR_ANGLE/2) * CURSOR_HEIGHT / 1.5, + Math.cos(CURSOR_ANGLE/2) * CURSOR_HEIGHT / 1.5); + context.lineTo(Math.sin(CURSOR_ANGLE) * CURSOR_HEIGHT / 1.2, + Math.cos(CURSOR_ANGLE) * CURSOR_HEIGHT / 1.2); + context.lineTo(0, 0); + context.shadowColor = 'rgba(0,0,0,0.3)'; + context.shadowBlur = 2; + context.shadowOffsetX = 1; + context.shadowOffsetY = 2; + context.strokeStyle = "#ffffff"; + context.stroke(); + context.fill(); + return canvas[0].toDataURL("image/png"); + } + + var scrollTimeout = null; + var scrollTimeoutSet = 0; + var SCROLL_DELAY_TIMEOUT = 75; + var SCROLL_DELAY_LIMIT = 300; + + function scroll() { + var now = Date.now(); + if (scrollTimeout) { + if (now - scrollTimeoutSet < SCROLL_DELAY_LIMIT) { + clearTimeout(scrollTimeout); + } else { + // Just let it progress anyway + return; + } + } + scrollTimeout = setTimeout(_scrollRefresh, SCROLL_DELAY_TIMEOUT); + if (! scrollTimeoutSet) { + scrollTimeoutSet = now; + } + } + + var lastScrollMessage = null; + function _scrollRefresh() { + scrollTimeout = null; + scrollTimeoutSet = 0; + Cursor.forEach(function (c) { + c.refresh(); + }); + lastScrollMessage = { + type: "scroll-update", + position: elementFinder.elementByPixel($(window).scrollTop()) + }; + session.send(lastScrollMessage); + } + + // FIXME: do the same thing for cursor position? And give up on the + // ad hoc update-on-hello? + session.on("prepare-hello", function (helloMessage) { + if (lastScrollMessage) { + helloMessage.scrollPosition = lastScrollMessage.position; + } + }); + + session.hub.on("scroll-update", function (msg) { + msg.peer.scrollPosition = msg.position; + if (msg.peer.following) { + msg.peer.view.scrollTo(); + } + }); + + // In case there are multiple peers, we track that we've accepted one of their + // hello-based scroll updates, just so we don't bounce around (we don't intelligently + // choose which one to use, just the first that comes in) + var acceptedScrollUpdate = false; + session.hub.on("hello-back hello", function (msg) { + if (msg.type == "hello") { + // Once a hello comes in, a bunch of hello-backs not intended for us will also + // come in, and we should ignore them + acceptedScrollUpdate = true; + } + if (! msg.scrollPosition) { + return; + } + msg.peer.scrollPosition = msg.scrollPosition; + if ((! acceptedScrollUpdate) && + msg.sameUrl && + Date.now() - session.timeHelloSent < SCROLL_UPDATE_CUTOFF) { + acceptedScrollUpdate = true; + msg.peer.view.scrollTo(); + } + }); + + session.on("ui-ready", function () { + $(document).mousemove(mousemove); + document.addEventListener("click", documentClick, true); + document.addEventListener("keydown", documentKeydown, true); + $(window).scroll(scroll); + scroll(); + }); + + session.on("close", function () { + Cursor.forEach(function (c, clientId) { + Cursor.destroy(clientId); + }); + $(document).unbind("mousemove", mousemove); + document.removeEventListener("click", documentClick, true); + document.removeEventListener("keydown", documentKeydown, true); + $(window).unbind("scroll", scroll); + }); + + session.hub.on("hello", function (msg) { + // Immediately get our cursor onto this new person's screen: + if (lastMessage) { + session.send(lastMessage); + } + if (lastScrollMessage) { + session.send(lastScrollMessage); + } + }); + + function documentClick(event) { + if (event.togetherjsInternal) { + // This is an artificial internal event + return; + } + // FIXME: this might just be my imagination, but somehow I just + // really don't want to do anything at this stage of the event + // handling (since I'm catching every click), and I'll just do + // something real soon: + setTimeout(function () { + if (! TogetherJS.running) { + // This can end up running right after TogetherJS has been closed, often + // because TogetherJS was closed with a click... + return; + } + var element = event.target; + if (element == document.documentElement) { + // For some reason clicking on gives the element here + element = document.body; + } + if (elementFinder.ignoreElement(element)) { + return; + } + //Prevent click events on video objects to avoid conflicts with + //togetherjs's own video events + if (element.nodeName.toLowerCase() === 'video'){ + return; + } + + var dontShowClicks = TogetherJS.config.get("dontShowClicks"); + var cloneClicks = TogetherJS.config.get("cloneClicks"); + // If you dont want to clone the click for this element + // and you dont want to show the click for this element or you dont want to show any clicks + // then return to avoid sending a useless click + if ((! util.matchElement(element, cloneClicks)) && util.matchElement(element, dontShowClicks)) { + return; + } + var location = elementFinder.elementLocation(element); + var offset = $(element).offset(); + var offsetX = event.pageX - offset.left; + var offsetY = event.pageY - offset.top; + session.send({ + type: "cursor-click", + element: location, + offsetX: offsetX, + offsetY: offsetY + }); + if (util.matchElement(element, dontShowClicks)) { + return; + } + displayClick({top: event.pageY, left: event.pageX}, peers.Self.color); + }); + } + + var CLICK_TRANSITION_TIME = 3000; + + session.hub.on("cursor-click", function (pos) { + // When the click is calculated isn't always the same as how the + // last cursor update was calculated, so we force the cursor to + // the last location during a click: + if (! pos.sameUrl) { + // FIXME: if we *could have* done a local click, but we follow along + // later, we'll be in different states if that click was important. + // Mostly click cloning just won't work. + return; + } + Cursor.getClient(pos.clientId).updatePosition(pos); + var target = $(elementFinder.findElement(pos.element)); + var offset = target.offset(); + var top = offset.top + pos.offsetY; + var left = offset.left + pos.offsetX; + var cloneClicks = TogetherJS.config.get("cloneClicks"); + if (util.matchElement(target, cloneClicks)) { + eventMaker.performClick(target); + } + var dontShowClicks = TogetherJS.config.get("dontShowClicks"); + if (util.matchElement(target, dontShowClicks)) { + return; + } + displayClick({top: top, left: left}, pos.peer.color); + }); + + function displayClick(pos, color) { + // FIXME: should we hide the local click if no one else is going to see it? + // That means tracking who might be able to see our screen. + var element = templating.clone("click"); + $(document.body).append(element); + element.css({ + top: pos.top, + left: pos.left, + borderColor: color + }); + setTimeout(function () { + element.addClass("togetherjs-clicking"); + }, 100); + setTimeout(function () { + element.remove(); + }, CLICK_TRANSITION_TIME); + } + + var lastKeydown = 0; + var MIN_KEYDOWN_TIME = 500; + + function documentKeydown(event) { + setTimeout(function () { + var now = Date.now(); + if (now - lastKeydown < MIN_KEYDOWN_TIME) { + return; + } + lastKeydown = now; + // FIXME: is event.target interesting here? That is, *what* the + // user is typing into, not just that the user is typing? Also + // I'm assuming we don't care if the user it typing into a + // togetherjs-related field, since chat activity is as interesting + // as any other activity. + session.send({type: "keydown"}); + }); + } + + session.hub.on("keydown", function (msg) { + // FIXME: when the cursor is hidden there's nothing to show with setKeydown(). + var cursor = Cursor.getClient(msg.clientId); + cursor.setKeydown(); + }); + + util.testExpose({Cursor: Cursor}); + + return cursor; + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('ot',["util"], function (util) { + + var ot = util.Module("ot"); + var assert = util.assert; + + var StringSet = util.Class({ + /* Set that only supports string items */ + constructor: function () { + this._items = {}; + this._count = 0; + }, + contains: function (k) { + assert(typeof k == "string"); + return this._items.hasOwnProperty(k); + }, + add: function (k) { + assert(typeof k == "string"); + if (this.contains(k)) { + return; + } + this._items[k] = null; + this._count++; + }, + remove: function (k) { + assert(typeof k == "string"); + if (! this.contains(k)) { + return; + } + delete this._items[k]; + this._count++; + }, + isEmpty: function () { + return ! this._count; + } + }); + + var Queue = util.Class({ + + constructor: function (size) { + this._q = []; + this._size = size; + this._deleted = 0; + }, + + _trim: function () { + if (this._size) { + if (this._q.length > this._size) { + this._q.splice(0, this._q.length - this._size); + this._deleted += this._q.length - this._size; + } + } + }, + + push: function (item) { + this._q.push(item); + this._trim(); + }, + + last: function () { + return this._q[this._q.length-1]; + }, + + walkBack: function (callback, context) { + var result = true; + for (var i=this._q.length-1; i >= 0; i--) { + var item = this._q[i]; + result = callback.call(context, item, i + this._deleted); + if (result === false) { + return result; + } else if (! result) { + result = true; + } + } + return result; + }, + + walkForward: function (index, callback, context) { + var result = true; + for (var i=index; i this.version || + (otherChange.version == this.version && otherChange.clientId > this.clientId); + }, + + knowsAboutAll: function (versions) { + for (var clientId in versions) { + if (! versions.hasOwnProperty(clientId)) { + continue; + } + if (! versions[clientId]) { + continue; + } + if ((! this.known[clientId]) || this.known[clientId] < versions[clientId]) { + return false; + } + } + return true; + }, + + knowsAboutChange: function (change) { + return change.clientId == this.clientId || + (this.known[change.clientId] && this.known[change.clientId] >= change.version); + }, + + knowsAboutVersion: function (version, clientId) { + if ((! version) || clientId == this.clientId) { + return true; + } + return this.known[clientId] && this.known[clientId] >= version; + }, + + maybeMissingChanges: function (mostRecentVersion, clientId) { + if (! mostRecentVersion) { + // No actual changes for clientId exist + return false; + } + if (! this.known[clientId]) { + // We don't even know about clientId, so we are definitely missing something + return true; + } + if (this.known[clientId] >= mostRecentVersion) { + // We know about all versions through mostRecentVersion + return false; + } + if ((clientId > this.clientId && this.known[clientId] >= this.version-1) || + (clientId < this.clientId && this.known[clientId] == this.version)) { + // We know about all versions from clientId that could exist before this + // version + return false; + } + // We may or may not be missing something + return true; + } + }); + + /* SimpleHistory synchronizes peers by relying on the server to serialize + * the order of all updates. Each client maintains a queue of patches + * which have not yet been 'committed' (by being echoed back from the + * server). The client is responsible for transposing its own queue + * if 'earlier' patches are heard from the server. + * + * Let's say that A's edit "1" and B's edit "2" occur and get put in + * their respective SimpleHistory queues. The server happens to + * handle 1 first, then 2, so those are the order that all peers + * (both A and B) see the messages. + * + * A sees 1, and has 1 on its queue, so everything's fine. It + * updates the 'committed' text to match its current text and drops + * the patch from its queue. It then sees 2, but the basis number + * for 2 no longer matches the committed basis, so it throws it + * away. + * + * B sees 1, and has 2 on its queue. It does the OT transpose thing, + * updating the committed text to include 1 and the 'current' text + * to include 1+2. It updates its queue with the newly transposed + * version of 2 (call it 2prime) and updates 2prime's basis + * number. It them resends 2prime to the server. It then receives 2 + * (the original) but the basis number no longer matches the + * committed basis, so it throws it away. + * + * Now the server sees 2prime and rebroadcasts it to both A and B. + * + * A is seeing it for the first time, and the basis number matches, + * so it applies it to the current and committed text. + * + * B sees that 2prime matches what's on the start of its queue, + * shifts it off, and updates the committed text to match the + * current text. + * + * Note that no one tries to keep an entire history of changes, + * which is the main difference with ot.History. Everyone applies + * the same patches in the same order. + */ + ot.SimpleHistory = util.Class({ + + constructor: function(clientId, initState, initBasis) { + this.clientId = clientId; + this.committed = initState; + this.current = initState; + this.basis = initBasis; + this.queue = []; + this.deltaId = 1; + this.selection = null; + }, + + // Use a fake change to represent the selection. + // (This is the only bit that hard codes ot.TextReplace as the delta + // representation; override this in a subclass (or don't set the + // selection) if you are using a different delta representation. + setSelection: function(selection) { + if (selection) { + this.selection = ot.TextReplace(selection[0], + selection[1] - selection[0], '@'); + } else { + this.selection = null; + } + }, + + // Decode the fake change to reconstruct the updated selection. + getSelection: function() { + if (! this.selection) { + return null; + } + return [this.selection.start, this.selection.start + this.selection.del]; + }, + + // Add this delta to this client's queue. + add: function(delta) { + var change = { + id: this.clientId + '.' + (this.deltaId++), + delta: delta + }; + if (! this.queue.length) { + change.basis = this.basis; + } + this.queue.push(change); + this.current = delta.apply(this.current); + return !!change.basis; + }, + + // Apply a delta received from the server. + // Return true iff the current text changed as a result. + commit: function(change) { + + // ignore it if the basis doesn't match (this patch doesn't apply) + // if so, this delta is out of order; we expect the original client + // to retransmit an updated delta. + if (change.basis !== this.basis) { + return false; // 'current' text did not change + } + + // is this the first thing on the queue? + if (this.queue.length && this.queue[0].id === change.id) { + assert(change.basis === this.queue[0].basis); + // good, apply this to commit state & remove it from queue + this.committed = this.queue.shift().delta.apply(this.committed); + this.basis++; + if (this.queue.length) { + this.queue[0].basis = this.basis; + } + return false; // 'current' text did not change + } + + // Transpose all bits on the queue to put this patch first. + var inserted = change.delta; + this.queue = this.queue.map(function(qchange) { + var tt = qchange.delta.transpose(inserted); + inserted = tt[1]; + return { + id: qchange.id, + delta: tt[0] + }; + }); + if (this.selection) { + // update the selection! + this.selection = this.selection.transpose(inserted)[0]; + } + this.committed = change.delta.apply(this.committed); + this.basis++; + if (this.queue.length) { + this.queue[0].basis = this.basis; + } + // Update current by replaying queued changes starting from 'committed' + this.current = this.committed; + this.queue.forEach(function(qchange) { + this.current = qchange.delta.apply(this.current); + }.bind(this)); + return true; // The 'current' text changed. + }, + + // Return the next change to transmit to the server, or null if there + // isn't one. + getNextToSend: function() { + var qchange = this.queue[0]; + if (! qchange) { + /* nothing to send */ + return null; + } + if (qchange.sent) { + /* already sent */ + return null; + } + assert(qchange.basis); + qchange.sent = true; + return qchange; + } + }); + + ot.History = util.Class({ + + constructor: function (clientId, initState) { + this._history = Queue(); + this._history.push({ + clientId: "init", state: initState + }); + this.clientId = clientId; + this.known = {}; + this.mostRecentLocalChange = null; + }, + + add: function (change) { + // Simplest cast, it is our change: + if (change.clientId == this.clientId) { + this._history.push(change); + this.mostRecentLocalChange = change.version; + return change.delta; + } + assert((! this.known[change.clientId]) || this.known[change.clientId] < change.version, + "Got a change", change, "that appears older (or same as) a known change", this.known[change.clientId]); + // Second simplest case, we get a change that we can add to our + // history without modification: + var last = this._history.last(); + if ((last.clientId == "init" || last.isBefore(change)) && + change.knowsAboutAll(this.known) && + change.knowsAboutVersion(this.mostRecentLocalChange, this.clientId)) { + this._history.push(change); + this.known[change.clientId] = change.version; + return change.delta; + } + // We must do work! + + this.logHistory("//"); + + // First we check if we need to modify this change because we + // know about changes that it should know about (changes that + // preceed it that are in our local history). + var clientsToCheck = StringSet(); + for (var clientId in this.known) { + if (! this.known.hasOwnProperty(clientId)) { + continue; + } + if (change.maybeMissingChanges(this.known[clientId], clientId)) { + clientsToCheck.add(clientId); + } + } + if (change.maybeMissingChanges(this.mostRecentLocalChange, this.clientId)) { + clientsToCheck.add(this.clientId); + } + if (! clientsToCheck.isEmpty()) { + var indexToCheckFrom = null; + this._history.walkBack(function (c, index) { + indexToCheckFrom = index; + if (c.clientId == "init") { + return false; + } + if (clientsToCheck.contains(c.clientId) && + ! change.maybeMissingChanges(c.version, c.clientId)) { + clientsToCheck.remove(c.clientId); + if (clientsToCheck.isEmpty()) { + return false; + } + } + return true; + }, this); + this._history.walkForward(indexToCheckFrom, function (c, index) { + if (c.clientId == "init") { + return true; + } + if (change.isBefore(c)) { + return false; + } + if (! change.knowsAboutChange(c)) { + var presentDelta = this.promoteDelta(c.delta, index, change); + if (! presentDelta.equals(c.delta)) { + //console.log("->rebase delta rewrite", presentDelta+""); + } + this.logChange("->rebase", change, function () { + var result = change.delta.transpose(presentDelta); + change.delta = result[0]; + change.known[c.clientId] = c.version; + }, "with:", c); + } + return true; + }, this); + } + + // Next we insert the change into its proper location + var indexToInsert = null; + this._history.walkBack(function (c, index) { + if (c.clientId == "init" || c.isBefore(change)) { + indexToInsert = index+1; + return false; + } + return true; + }, this); + assert(indexToInsert); + this._history.insert(indexToInsert, change); + + // Now we fix up any forward changes + var fixupDelta = change.delta; + this._history.walkForward(indexToInsert+1, function (c, index) { + if (! c.knowsAboutChange(change)) { + var origChange = c.clone(); + this.logChange("^^fix", c, function () { + var fixupResult = c.delta.transpose(fixupDelta); + console.log(" ^^real"); + var result = c.delta.transpose(fixupDelta); + c.delta = result[0]; + c.known[change.clientId] = change.version; + fixupDelta = fixupResult[1]; + }, "clone:", change.delta+""); + console.log("(trans)", fixupDelta+""); + assert(c.knowsAboutChange(change)); + } + }, this); + + // Finally we return the transformed delta that represents + // changes that should be made to the state: + + this.logHistory("!!"); + return fixupDelta; + }, + + promoteDelta: function (delta, deltaIndex, untilChange) { + this._history.walkForward(deltaIndex+1, function (c, index) { + if (untilChange.isBefore(c)) { + return false; + } + // FIXME: not sure if this clientId check here is right. Maybe + // if untilChange.knowsAbout(c)? + if (untilChange.knowsAboutChange(c)) { + var result = c.delta.transpose(delta); + delta = result[1]; + } + return true; + }); + return delta; + }, + + logHistory: function (prefix) { + prefix = prefix || ""; + var postfix = Array.prototype.slice.call(arguments, 1); + console.log.apply(console, [prefix + "history", this.clientId, ":"].concat(postfix)); + console.log(prefix + " state:", JSON.stringify(this.getStateSafe())); + var hstate; + this._history.walkForward(0, function (c, index) { + if (! index) { + assert(c.clientId == "init"); + console.log(prefix + " init:", JSON.stringify(c.state)); + hstate = c.state; + } else { + try { + hstate = c.delta.apply(hstate); + } catch (e) { + hstate = "Error: " + e; + } + console.log(prefix + " ", index, c+"", JSON.stringify(hstate)); + } + }); + }, + + logChange: function (prefix, change, callback) { + prefix = prefix || "before"; + var postfix = Array.prototype.slice.call(arguments, 3); + console.log.apply( + console, + [prefix, this.clientId, ":", change+""].concat(postfix).concat([JSON.stringify(this.getStateSafe(true))])); + try { + callback(); + } finally { + console.log(prefix + " after:", change+"", JSON.stringify(this.getStateSafe())); + } + }, + + addDelta: function (delta) { + var version = this._createVersion(); + var change = Change(version, this.clientId, delta, util.extend(this.knownVersions)); + this.add(change); + return change; + }, + + _createVersion: function () { + var max = 1; + for (var id in this.knownVersions) { + max = Math.max(max, this.knownVersions[id]); + } + max = Math.max(max, this.mostRecentLocalChange); + return max+1; + }, + + fault: function (change) { + throw new Error('Fault'); + }, + + getState: function () { + var state; + this._history.walkForward(0, function (c) { + if (c.clientId == "init") { + // Initialization, has the state + state = c.state; + } else { + state = c.delta.apply(state); + } + }, this); + return state; + }, + + getStateSafe: function () { + try { + return this.getState(); + } catch (e) { + return 'Error: ' + e; + } + } + + }); + + ot.TextReplace = util.Class({ + + constructor: function (start, del, text) { + assert(typeof start == "number" && typeof del == "number" && typeof text == "string", start, del, text); + assert(start >=0 && del >= 0, start, del); + this.start = start; + this.del = del; + this.text = text; + }, + + toString: function () { + if (this.empty()) { + return '[no-op]'; + } + if (! this.del) { + return '[insert ' + JSON.stringify(this.text) + ' @' + this.start + ']'; + } else if (! this.text) { + return '[delete ' + this.del + ' chars @' + this.start + ']'; + } else { + return '[replace ' + this.del + ' chars with ' + JSON.stringify(this.text) + ' @' + this.start + ']'; + } + }, + + equals: function (other) { + return other.constructor === this.constructor && + other.del === this.del && + other.start === this.start && + other.text === this.text; + }, + + clone: function (start, del, text) { + if (start === undefined) { + start = this.start; + } + if (del === undefined) { + del = this.del; + } + if (text === undefined) { + text = this.text; + } + return ot.TextReplace(start, del, text); + }, + + empty: function () { + return (! this.del) && (! this.text); + }, + + apply: function (text) { + if (this.empty()) { + return text; + } + if (this.start > text.length) { + console.trace(); + throw new util.AssertionError("Start after end of text (" + JSON.stringify(text) + "/" + text.length + "): " + this); + } + if (this.start + this.del > text.length) { + throw new util.AssertionError("Start+del after end of text (" + JSON.stringify(text) + "/" + text.length + "): " + this); + } + return text.substr(0, this.start) + this.text + text.substr(this.start+this.del); + }, + + transpose: function (delta) { + /* Transform this delta as though the other delta had come before it. + Returns a [new_version_of_this, transformed_delta], where transformed_delta + satisfies: + + result1 = new_version_of_this.apply(delta.apply(text)); + result2 = transformed_delta.apply(this.apply(text)); + assert(result1 == result2); + + Does not modify this object. + */ + var overlap; + assert(delta instanceof ot.TextReplace, "Transposing with non-TextReplace:", delta); + if (this.empty()) { + //console.log(" =this is empty"); + return [this.clone(), delta.clone()]; + } + if (delta.empty()) { + //console.log(" =other is empty"); + return [this.clone(), delta.clone()]; + } + if (delta.before(this)) { + //console.log(" =this after other"); + return [this.clone(this.start + delta.text.length - delta.del), + delta.clone()]; + } else if (this.before(delta)) { + //console.log(" =this before other"); + return [this.clone(), delta.clone(delta.start + this.text.length - this.del)]; + } else if (delta.sameRange(this)) { + //console.log(" =same range"); + return [this.clone(this.start+delta.text.length, 0), + delta.clone(undefined, 0)]; + } else if (delta.contains(this)) { + //console.log(" =other contains this"); + return [this.clone(delta.start+delta.text.length, 0, this.text), + delta.clone(undefined, delta.del - this.del + this.text.length, delta.text + this.text)]; + } else if (this.contains(delta)) { + //console.log(" =this contains other"); + return [this.clone(undefined, this.del - delta.del + delta.text.length, delta.text + this.text), + delta.clone(this.start, 0, delta.text)]; + } else if (this.overlapsStart(delta)) { + //console.log(" =this overlaps start of other"); + overlap = this.start + this.del - delta.start; + return [this.clone(undefined, this.del - overlap), + delta.clone(this.start + this.text.length, delta.del - overlap)]; + } else { + //console.log(" =this overlaps end of other"); + assert(delta.overlapsStart(this), delta+"", "does not overlap start of", this+"", delta.before(this)); + overlap = delta.start + delta.del - this.start; + return [this.clone(delta.start + delta.text.length, this.del - overlap), + delta.clone(undefined, delta.del - overlap)]; + } + throw 'Should not happen'; + }, + + before: function (other) { + return this.start + this.del <= other.start; + }, + + contains: function (other) { + return other.start >= this.start && other.start + other.del < this.start + this.del; + }, + + sameRange: function (other) { + return other.start == this.start && other.del == this.del; + }, + + overlapsStart: function (other) { + return this.start < other.start && this.start + this.del > other.start; + }, + + classMethods: { + + /* Make a new ot.TextReplace that converts oldValue to newValue. */ + fromChange: function(oldValue, newValue) { + assert(typeof oldValue == "string"); + assert(typeof newValue == "string"); + var commonStart = 0; + while (commonStart < newValue.length && + newValue.charAt(commonStart) == oldValue.charAt(commonStart)) { + commonStart++; + } + var commonEnd = 0; + while (commonEnd < (newValue.length - commonStart) && + commonEnd < (oldValue.length - commonStart) && + newValue.charAt(newValue.length - commonEnd - 1) == + oldValue.charAt(oldValue.length - commonEnd - 1)) { + commonEnd++; + } + var removed = oldValue.substr(commonStart, oldValue.length - commonStart - commonEnd); + var inserted = newValue.substr(commonStart, newValue.length - commonStart - commonEnd); + if (! (removed.length || inserted)) { + return null; + } + return this(commonStart, removed.length, inserted); + }, + + random: function (source, generator) { + var text, start, len; + var ops = ["ins", "del", "repl"]; + if (! source.length) { + ops = ["ins"]; + } + switch (generator.pick(ops)) { + case "ins": + if (! generator.number(2)) { + text = generator.string(1); + } else { + text = generator.string(generator.number(3)+1); + } + if (! generator.number(4)) { + start = 0; + } else if (! generator.number(3)) { + start = source.length-1; + } else { + start = generator.number(source.length); + } + return this(start, 0, text); + + case "del": + if (! generator.number(20)) { + return this(0, source.length, ""); + } + start = generator.number(source.length-1); + if (! generator.number(2)) { + len = 1; + } else { + len = generator.number(5)+1; + } + len = Math.min(len, source.length - start); + return this(start, len, ""); + + case "repl": + start = generator.number(source.length-1); + len = generator.number(5); + len = Math.min(len, source.length - start); + text = generator.string(generator.number(2)+1); + return this(start, len, text); + } + throw 'Unreachable'; + } + } + }); + + return ot; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('forms',["jquery", "util", "session", "elementFinder", "eventMaker", "templating", "ot"], function ($, util, session, elementFinder, eventMaker, templating, ot) { + var forms = util.Module("forms"); + var assert = util.assert; + + // This is how much larger the focus element is than the element it surrounds + // (this is padding on each side) + var FOCUS_BUFFER = 5; + + var inRemoteUpdate = false; + + function suppressSync(element) { + var ignoreForms = TogetherJS.config.get("ignoreForms"); + if (ignoreForms === true) { + return true; + } + else { + return $(element).is(ignoreForms.join(",")); + } + } + + function maybeChange(event) { + // Called when we get an event that may or may not indicate a real change + // (like keyup in a textarea) + var tag = event.target.tagName; + if (tag == "TEXTAREA" || tag == "INPUT") { + change(event); + } + } + + function change(event) { + sendData({ + element: event.target, + value: getValue(event.target) + }); + } + + function sendData(attrs) { + var el = $(attrs.element); + assert(el); + var tracker = attrs.tracker; + var value = attrs.value; + if (inRemoteUpdate) { + return; + } + if (elementFinder.ignoreElement(el) || + (elementTracked(el) && !tracker) || + suppressSync(el)) { + return; + } + var location = elementFinder.elementLocation(el); + var msg = { + type: "form-update", + element: location + }; + if (isText(el) || tracker) { + var history = el.data("togetherjsHistory"); + if (history) { + if (history.current == value) { + return; + } + var delta = ot.TextReplace.fromChange(history.current, value); + assert(delta); + history.add(delta); + maybeSendUpdate(msg.element, history, tracker); + return; + } else { + msg.value = value; + msg.basis = 1; + el.data("togetherjsHistory", ot.SimpleHistory(session.clientId, value, 1)); + } + } else { + msg.value = value; + } + session.send(msg); + } + + function isCheckable(el) { + el = $(el); + var type = (el.prop("type") || "text").toLowerCase(); + if (el.prop("tagName") == "INPUT" && ["radio", "checkbox"].indexOf(type) != -1) { + return true; + } + return false; + } + + var editTrackers = {}; + var liveTrackers = []; + + TogetherJS.addTracker = function (TrackerClass, skipSetInit) { + assert(typeof TrackerClass === "function", "You must pass in a class"); + assert(typeof TrackerClass.prototype.trackerName === "string", + "Needs a .prototype.trackerName string"); + // Test for required instance methods. + "destroy update init makeInit tracked".split(/ /).forEach(function(m) { + assert(typeof TrackerClass.prototype[m] === "function", + "Missing required tracker method: "+m); + }); + // Test for required class methods. + "scan tracked".split(/ /).forEach(function(m) { + assert(typeof TrackerClass[m] === "function", + "Missing required tracker class method: "+m); + }); + editTrackers[TrackerClass.prototype.trackerName] = TrackerClass; + if (!skipSetInit) { + setInit(); + } + }; + + var AceEditor = util.Class({ + + trackerName: "AceEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert($(this.element).hasClass("ace_editor")); + this._change = this._change.bind(this); + this._editor().document.on("change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().document.removeListener("change", this._change); + }, + + update: function (msg) { + this._editor().document.setValue(msg.value); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this._editor().document.getValue() + }; + }, + + _editor: function () { + return this.element.env; + }, + + _change: function (e) { + // FIXME: I should have an internal .send() function that automatically + // asserts !inRemoteUpdate, among other things + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + getContent: function() { + return this._editor().document.getValue(); + } + }); + + AceEditor.scan = function () { + return $(".ace_editor"); + }; + + AceEditor.tracked = function (el) { + return !! $(el).closest(".ace_editor").length; + }; + + TogetherJS.addTracker(AceEditor, true /* skip setInit */); + + var CodeMirrorEditor = util.Class({ + trackerName: "CodeMirrorEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert(this.element.CodeMirror); + this._change = this._change.bind(this); + this._editor().on("change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().off("change", this._change); + }, + + update: function (msg) { + this._editor().setValue(msg.value); + }, + + init: function (msg) { + if (msg.value) { + this.update(msg); + } + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this._editor().getValue() + }; + }, + + _change: function (editor, change) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + return this.element.CodeMirror; + }, + + getContent: function() { + return this._editor().getValue(); + } + }); + + CodeMirrorEditor.scan = function () { + var result = []; + var els = document.body.getElementsByTagName("*"); + var _len = els.length; + for (var i=0; i<_len; i++) { + var el = els[i]; + if (el.CodeMirror) { + result.push(el); + } + } + return $(result); + }; + + CodeMirrorEditor.tracked = function (el) { + el = $(el)[0]; + while (el) { + if (el.CodeMirror) { + return true; + } + el = el.parentNode; + } + return false; + }; + + TogetherJS.addTracker(CodeMirrorEditor, true /* skip setInit */); + + var CKEditor = util.Class({ + trackerName: "CKEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert(CKEDITOR); + assert(CKEDITOR.dom.element.get(this.element)); + this._change = this._change.bind(this); + // FIXME: change event is available since CKEditor 4.2 + this._editor().on("change", this._change); + }, + tracked: function (el) { + return this.element === $(el)[0]; + }, + destroy: function (el) { + this._editor().removeListener("change", this._change); + }, + + update: function (msg) { + //FIXME: use setHtml instead of setData to avoid frame reloading overhead + this._editor().editable().setHtml(msg.value); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this.getContent() + }; + }, + + _change: function (e) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + return CKEDITOR.dom.element.get(this.element).getEditor(); + }, + + getContent: function () { + return this._editor().getData(); + } + }); + + CKEditor.scan = function () { + var result = []; + if (typeof CKEDITOR == "undefined") { + return; + } + var editorInstance; + for (var instanceIdentifier in CKEDITOR.instances) { + editorInstance = document.getElementById(instanceIdentifier) || document.getElementsByName(instanceIdentifier)[0]; + if (editorInstance) { + result.push(editorInstance); + } + } + return $(result); + }; + + CKEditor.tracked = function (el) { + if (typeof CKEDITOR == "undefined") { + return false; + } + el = $(el)[0]; + return !! (CKEDITOR.dom.element.get(el) && CKEDITOR.dom.element.get(el).getEditor()); + }; + + TogetherJS.addTracker(CKEditor, true /* skip setInit */); + + //////////////////// BEGINNING OF TINYMCE //////////////////////// + var tinymceEditor = util.Class({ + trackerName: "tinymceEditor", + + constructor: function (el) { + this.element = $(el)[0]; + assert($(this.element).attr('id').indexOf('mce_') != -1); + this._change = this._change.bind(this); + this._editor().on("input keyup cut paste change", this._change); + }, + + tracked: function (el) { + return this.element === $(el)[0]; + }, + + destroy: function (el) { + this._editor().destory(); + }, + + update: function (msg) { + this._editor().setContent(msg.value, {format: 'raw'}); + }, + + init: function (update, msg) { + this.update(update); + }, + + makeInit: function () { + return { + element: this.element, + tracker: this.trackerName, + value: this.getContent() + }; + }, + + _change: function (e) { + if (inRemoteUpdate) { + return; + } + sendData({ + tracker: this.trackerName, + element: this.element, + value: this.getContent() + }); + }, + + _editor: function () { + if (typeof tinymce == "undefined") { + return; + } + return $(this.element).data("tinyEditor"); + }, + + getContent: function () { + return this._editor().getContent(); + } + }); + + tinymceEditor.scan = function () { + //scan all the elements that contain tinyMCE editors + if (typeof tinymce == "undefined") { + return; + } + var result = []; + $(window.tinymce.editors).each(function (i, ed) { + result.push($('#'+ed.id)); + //its impossible to retrieve a single editor from a container, so lets store it + $('#'+ed.id).data("tinyEditor", ed); + }); + return $(result); + }; + + tinymceEditor.tracked = function (el) { + if (typeof tinymce == "undefined") { + return false; + } + el = $(el)[0]; + return !!$(el).data("tinyEditor"); + /*var flag = false; + $(window.tinymce.editors).each(function (i, ed) { + if (el.id == ed.id) { + flag = true; + } + }); + return flag;*/ + }; + + TogetherJS.addTracker(tinymceEditor, true); + ///////////////// END OF TINYMCE /////////////////////////////////// + + function buildTrackers() { + assert(! liveTrackers.length); + util.forEachAttr(editTrackers, function (TrackerClass) { + var els = TrackerClass.scan(); + if (els) { + $.each(els, function () { + var tracker = new TrackerClass(this); + $(this).data("togetherjsHistory", ot.SimpleHistory(session.clientId, tracker.getContent(), 1)); + liveTrackers.push(tracker); + }); + } + }); + } + + function destroyTrackers() { + liveTrackers.forEach(function (tracker) { + tracker.destroy(); + }); + liveTrackers = []; + } + + function elementTracked(el) { + var result = false; + util.forEachAttr(editTrackers, function (TrackerClass) { + if (TrackerClass.tracked(el)) { + result = true; + } + }); + return result; + } + + function getTracker(el, name) { + el = $(el)[0]; + for (var i=0; i= STEPS.length) { + session.emit("startup-ready"); + return; + } + currentStep = STEPS[index]; + handlers[currentStep](startup.start); + }; + + var handlers = { + + browserBroken: function (next) { + if (window.WebSocket) { + next(); + return; + } + windowing.show("#togetherjs-browser-broken", { + onClose: function () { + session.close(); + } + }); + if ($.browser.msie) { + $("#togetherjs-browser-broken-is-ie").show(); + } + }, + + browserUnsupported: function (next) { + if (! $.browser.msie) { + next(); + return; + } + var cancel = true; + windowing.show("#togetherjs-browser-unsupported", { + onClose: function () { + if (cancel) { + session.close(); + } else { + next(); + } + } + }); + $("#togetherjs-browser-unsupported-anyway").click(function () { + cancel = false; + }); + }, + + sessionIntro: function (next) { + // pgbovine - pop open chat + windowing.show("#togetherjs-chat"); + + if ((! session.isClient) || ! session.firstRun) { + next(); + return; + } + TogetherJS.config.close("suppressJoinConfirmation"); + if (TogetherJS.config.get("suppressJoinConfirmation")) { + next(); + return; + } + var cancelled = false; + windowing.show("#togetherjs-intro", { + onClose: function () { + if (! cancelled) { + next(); + } + } + }); + $("#togetherjs-intro .togetherjs-modal-dont-join").click(function () { + cancelled = true; + windowing.hide(); + session.close("declined-join"); + }); + }, + + // pgbovine - disable boilerplate walkthrough popup + walkthrough: function (next) { + next(); + }, + /* + walkthrough: function (next) { + storage.settings.get("seenIntroDialog").then(function (seenIntroDialog) { + if (seenIntroDialog) { + next(); + return; + } + require(["walkthrough"], function (walkthrough) { + walkthrough.start(true, function () { + storage.settings.set("seenIntroDialog", true); + next(); + }); + }); + }); + }, + */ + + share: function (next) { + TogetherJS.config.close("suppressInvite"); + if (session.isClient || (! session.firstRun) || + TogetherJS.config.get("suppressInvite")) { + next(); + return; + } + require(["windowing"], function (windowing) { + windowing.show("#togetherjs-share"); + // FIXME: no way to detect when the window is closed + // If there was a next() step then it would not work + }); + } + + }; + + return startup; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('templates-localized',[], function () { + return { + "interface": "__interface_html__", + walkthrough: "__walkthrough_html__", + names: "__names__" + }; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('videos',["jquery", "util", "session", "elementFinder"], +function ($, util, session, elementFinder) { + + var listeners = []; + + var TIME_UPDATE = 'timeupdate'; + var MIRRORED_EVENTS = ['play', 'pause']; + + var TOO_FAR_APART = 3000; + + session.on("reinitialize", function () { + unsetListeners(); + setupListeners(); + }); + + session.on("ui-ready", setupListeners); + + function setupListeners() { + var videos = $('video'); + setupMirroredEvents(videos); + setupTimeSync(videos); + } + + function setupMirroredEvents(videos) { + var currentListener; + MIRRORED_EVENTS.forEach(function (eventName) { + currentListener = makeEventSender(eventName); + videos.on(eventName, currentListener); + listeners.push({ + name: eventName, + listener: currentListener + }); + }); + } + + function makeEventSender(eventName) { + return function (event, options) { + var element = event.target; + options || (options = {}); + if (!options.silent) { + session.send({ + type: ('video-'+eventName), + location: elementFinder.elementLocation(element), + position: element.currentTime + }); + } + }; + } + + function setupTimeSync(videos) { + videos.each(function(i, video) { + var onTimeUpdate = makeTimeUpdater(); + $(video).on(TIME_UPDATE, onTimeUpdate); + listeners.push({ + name: TIME_UPDATE, + listener: onTimeUpdate + }); + }); + } + + function makeTimeUpdater() { + var last = 0; + return function (event) { + var currentTime = event.target.currentTime; + if(areTooFarApart(currentTime, last)){ + makeEventSender(TIME_UPDATE)(event); + } + last = currentTime; + }; + } + + function areTooFarApart(currentTime, lastTime) { + var secDiff = Math.abs(currentTime - lastTime); + var milliDiff = secDiff * 1000; + return milliDiff > TOO_FAR_APART; + } + + session.on("close", unsetListeners); + + function unsetListeners() { + var videos = $('video'); + listeners.forEach(function (event) { + videos.off(event.name, event.listener); + }); + listeners = []; + } + + + session.hub.on('video-timeupdate', function (msg) { + var element = $findElement(msg.location); + var oldTime = element.prop('currentTime'); + var newTime = msg.position; + + //to help throttle uneccesary position changes + if(areTooFarApart(oldTime, newTime)){ + setTime(element, msg.position); + } + }); + + MIRRORED_EVENTS.forEach( function (eventName) { + session.hub.on("video-"+eventName, function (msg) { + var element = $findElement(msg.location); + + setTime(element, msg.position); + + element.trigger(eventName, {silent: true}); + }); + }); + + //Currently does not discriminate between visible and invisible videos + function $findElement(location) { + return $(elementFinder.findElement(location)); + } + + function setTime(video, time) { + video.prop('currentTime', time); + } + +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('walkthrough',["util", "ui", "jquery", "windowing", "templates", "templating", "session", "peers"], function (util, ui, $, windowing, templates, templating, session, peers) { + var assert = util.assert; + var walkthrough = util.Module("walkthrough"); + var onHideAll = null; + var container = null; + + var slides = null; + + walkthrough.start = function (firstTime, doneCallback) { + if (! container) { + container = $(templates("walkthrough")); + container.hide(); + ui.container.append(container); + slides = container.find(".togetherjs-walkthrough-slide"); + slides.hide(); + var progress = $("#togetherjs-walkthrough-progress"); + slides.each(function (index) { + var bullet = templating.sub("walkthrough-slide-progress"); + progress.append(bullet); + bullet.click(function () { + show(index); + }); + }); + container.find("#togetherjs-walkthrough-previous").click(previous); + container.find("#togetherjs-walkthrough-next").click(next); + ui.prepareShareLink(container); + container.find(".togetherjs-self-name").bind("keyup", function (event) { + var val = $(event.target).val(); + peers.Self.update({name: val}); + }); + container.find(".togetherjs-swatch").click(function () { + var picker = $("#togetherjs-pick-color"); + if (picker.is(":visible")) { + picker.hide(); + return; + } + picker.show(); + picker.find(".togetherjs-swatch-active").removeClass("togetherjs-swatch-active"); + picker.find(".togetherjs-swatch[data-color=\"" + peers.Self.color + "\"]").addClass("togetherjs-swatch-active"); + var location = container.find(".togetherjs-swatch").offset(); + picker.css({ + top: location.top, + // The -7 comes out of thin air, but puts it in the right place: + left: location.left-7 + }); + }); + if (session.isClient) { + container.find(".togetherjs-if-creator").remove(); + container.find(".togetherjs-ifnot-creator").show(); + } else { + container.find(".togetherjs-if-creator").show(); + container.find(".togetherjs-ifnot-creator").remove(); + } + TogetherJS.config.track("siteName", function (value) { + value = value || document.title; + container.find(".togetherjs-site-name").text(value); + }); + ui.activateAvatarEdit(container, { + onSave: function () { + container.find("#togetherjs-avatar-when-saved").show(); + container.find("#togetherjs-avatar-when-unsaved").hide(); + }, + onPending: function () { + container.find("#togetherjs-avatar-when-saved").hide(); + container.find("#togetherjs-avatar-when-unsaved").show(); + } + }); + // This triggers substititions in the walkthrough: + peers.Self.update({}); + session.emit("new-element", container); + } + assert(typeof firstTime == "boolean", "You must provide a firstTime boolean parameter"); + if (firstTime) { + container.find(".togetherjs-walkthrough-firsttime").show(); + container.find(".togetherjs-walkthrough-not-firsttime").hide(); + } else { + container.find(".togetherjs-walkthrough-firsttime").hide(); + container.find(".togetherjs-walkthrough-not-firsttime").show(); + } + onHideAll = doneCallback; + show(0); + windowing.show(container); + }; + + function show(index) { + slides.hide(); + $(slides[index]).show(); + var bullets = container.find("#togetherjs-walkthrough-progress .togetherjs-walkthrough-slide-progress"); + bullets.removeClass("togetherjs-active"); + $(bullets[index]).addClass("togetherjs-active"); + var $next = $("#togetherjs-walkthrough-next").removeClass("togetherjs-disabled"); + var $previous = $("#togetherjs-walkthrough-previous").removeClass("togetherjs-disabled"); + if (index == slides.length - 1) { + $next.addClass("togetherjs-disabled"); + } else if (index === 0) { + $previous.addClass("togetherjs-disabled"); + } + } + + function previous() { + var index = getIndex(); + index--; + if (index < 0) { + index = 0; + } + show(index); + } + + function next() { + var index = getIndex(); + index++; + if (index >= slides.length) { + index = slides.length-1; + } + show(index); + } + + function getIndex() { + var active = slides.filter(":visible"); + if (! active.length) { + return 0; + } + for (var i=0; i"); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + context.arc(session.AVATAR_SIZE/2, session.AVATAR_SIZE/2, session.AVATAR_SIZE/2, 0, Math.PI*2); + context.closePath(); + context.clip(); + context.drawImage($video[0], (session.AVATAR_SIZE - width) / 2, 0, width, height); + savePicture($canvas[0].toDataURL("image/png")); + } + + $upload.on("change", function () { + var reader = new FileReader(); + reader.onload = function () { + // FIXME: I don't actually know it's JPEG, but it's probably a + // good enough guess: + var url = "data:image/jpeg;base64," + util.blobToBase64(this.result); + convertImage(url, function (result) { + savePicture(result); + }); + }; + reader.onerror = function () { + console.error("Error reading file:", this.error); + }; + reader.readAsArrayBuffer(this.files[0]); + }); + + function convertImage(imageUrl, callback) { + var $canvas = $(""); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + var img = new Image(); + img.src = imageUrl; + // Sometimes the DOM updates immediately to call + // naturalWidth/etc, and sometimes it doesn't; using setTimeout + // gives it a chance to catch up + setTimeout(function () { + var width = img.naturalWidth || img.width; + var height = img.naturalHeight || img.height; + width = width * (session.AVATAR_SIZE / height); + height = session.AVATAR_SIZE; + context.drawImage(img, 0, 0, width, height); + callback($canvas[0].toDataURL("image/png")); + }); + } + + }); + + /**************************************** + * RTC support + */ + + function audioButton(selector) { + ui.displayToggle(selector); + if (selector == "#togetherjs-audio-incoming") { + $("#togetherjs-audio-button").addClass("togetherjs-animated").addClass("togetherjs-color-alert"); + } else { + $("#togetherjs-audio-button").removeClass("togetherjs-animated").removeClass("togetherjs-color-alert"); + } + } + + session.on("ui-ready", function () { + $("#togetherjs-audio-button").click(function () { + if ($("#togetherjs-rtc-info").is(":visible")) { + windowing.hide(); + return; + } + if (session.RTCSupported) { + enableAudio(); + } else { + windowing.show("#togetherjs-rtc-not-supported"); + } + }); + + if (! session.RTCSupported) { + audioButton("#togetherjs-audio-unavailable"); + return; + } + audioButton("#togetherjs-audio-ready"); + + var audioStream = null; + var accepted = false; + var connected = false; + var $audio = $("#togetherjs-audio-element"); + var offerSent = null; + var offerReceived = null; + var offerDescription = false; + var answerSent = null; + var answerReceived = null; + var answerDescription = false; + var _connection = null; + var iceCandidate = null; + + function enableAudio() { + accepted = true; + storage.settings.get("dontShowRtcInfo").then(function (dontShow) { + if (! dontShow) { + windowing.show("#togetherjs-rtc-info"); + } + }); + if (! audioStream) { + startStreaming(connect); + return; + } + if (! connected) { + connect(); + } + toggleMute(); + } + + ui.container.find("#togetherjs-rtc-info .togetherjs-dont-show-again").change(function () { + storage.settings.set("dontShowRtcInfo", this.checked); + }); + + function error() { + console.warn.apply(console, arguments); + var s = ""; + for (var i=0; i= expected) { + close(); + } else { + def.notify(users); + } + } + } + console.log("users", users); + }; + channel.send({ + type: "who", + "server-echo": true, + clientId: null + }); + var timeout = setTimeout(function () { + close(); + }, MAX_RESPONSE_TIME); + function close() { + if (timeout) { + clearTimeout(timeout); + } + if (lateResponseTimeout) { + clearTimeout(lateResponseTimeout); + } + channel.close(); + def.resolve(users); + } + }); + }; + + who.invite = function (hubUrl, clientId) { + return util.Deferred(function (def) { + var channel = channels.WebSocketChannel(hubUrl); + var id = util.generateId(); + channel.onmessage = function (msg) { + if (msg.type == "invite" && msg.inviteId == id) { + channel.close(); + def.resolve(); + } + }; + var userInfo = session.makeHelloMessage(false); + delete userInfo.type; + userInfo.clientId = session.clientId; + channel.send({ + type: "invite", + inviteId: id, + url: session.shareUrl(), + userInfo: userInfo, + forClientId: clientId, + clientId: null, + "server-echo": true + }); + }); + }; + + who.ExternalPeer = util.Class({ + isSelf: false, + isExternal: true, + constructor: function (id, attrs) { + attrs = attrs || {}; + assert(id); + this.id = id; + this.identityId = attrs.identityId || null; + this.status = attrs.status || "live"; + this.idle = attrs.status || "active"; + this.name = attrs.name || null; + this.avatar = attrs.avatar || null; + this.color = attrs.color || "#00FF00"; + this.lastMessageDate = 0; + this.view = ui.PeerView(this); + }, + + className: function (prefix) { + prefix = prefix || ""; + return prefix + util.safeClassName(this.id); + } + + }); + + return who; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http:// mozilla.org/MPL/2.0/. */ + +define('youtubeVideos',["jquery", "util", "session", "elementFinder"], +function ($, util, session, elementFinder) { + + // constant var to indicate whether two players are too far apart in sync + var TOO_FAR_APART = 3000; + // embedded youtube iframes + var youTubeIframes = []; + // youtube API load delay + var API_LOADING_DELAY = 2000; + + session.on("reinitialize", function () { + if (TogetherJS.config.get("youtube")) { + prepareYouTube(); + } + }); + + session.on("close", function () { + $(youTubeIframes).each(function (i, iframe) { + // detach players from iframes + $(iframe).removeData("togetherjs-player"); + $(iframe).removeData("dontPublish"); + $(iframe).removeData("currentVideoId"); + // disable iframeAPI + $(iframe).removeAttr("enablejsapi"); + // remove unique youtube iframe indicators + var id = $(iframe).attr("id") || ""; + if (id.indexOf("youtube-player") === 0) { + // An id we added + $(iframe).removeAttr("id"); + } + youTubeIframes = []; + }); + }); + + TogetherJS.config.track("youtube", function (track, previous) { + if (track && ! previous) { + prepareYouTube(); + // You can enable youtube dynamically, but can't turn it off: + TogetherJS.config.close("youtube"); + } + }); + + function prepareYouTube() { + // setup iframes first + setupYouTubeIframes(); + + // this function should be global so it can be called when API is loaded + window.onYouTubeIframeAPIReady = function() { + // YouTube API is ready + $(youTubeIframes).each(function (i, iframe) { + var player = new YT.Player(iframe.id, { // get the reference to the already existing iframe + events: { + 'onReady': insertPlayer, + 'onStateChange': publishPlayerStateChange + } + }); + }); + }; + + if (window.YT === undefined) { + // load necessary API + // it calls onYouTubeIframeAPIReady automatically when the API finishes loading + var tag = document.createElement('script'); + tag.src = "https://www.youtube.com/iframe_api"; + var firstScriptTag = document.getElementsByTagName('script')[0]; + firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + } else { + // manually invoke APIReady function when the API was already loaded by user + onYouTubeIframeAPIReady(); + } + + // give each youtube iframe a unique id and set its enablejsapi param to true + function setupYouTubeIframes() { + var iframes = $('iframe'); + iframes.each(function (i, iframe) { + // if the iframe's unique id is already set, skip it + // FIXME: what if the user manually sets an iframe's id (i.e. "#my-youtube")? + // maybe we should set iframes everytime togetherjs is reinitialized? + if (($(iframe).attr("src") || "").indexOf("youtube") != -1 && !$(iframe).attr("id")) { + $(iframe).attr("id", "youtube-player"+i); + $(iframe).attr("enablejsapi", 1); + youTubeIframes[i] = iframe; + } + }); + } // iframes are ready + + function insertPlayer(event) { + // only when it is READY, attach a player to its iframe + var currentPlayer = event.target; + var currentIframe = currentPlayer.a; + // check if a player is already attached in case of being reinitialized + if (!$(currentIframe).data("togetherjs-player")) { + $(currentIframe).data("togetherjs-player", currentPlayer); + // initialize its dontPublish flag as well + $(currentIframe).data("dontPublish", false); + // store its current video's id + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + $(currentIframe).data("currentVideoId", currentVideoId); + } + } + } // end of prepareYouTube + + function publishPlayerStateChange(event) { + var target = event.target; + var currentIframe = target.a; + // FIXME: player object retrieved from event.target has an incomplete set of essential functions + // this is most likely due to a recently-introduced problem with current YouTube API as others have been reporting the same issue (12/18/`13) + //var currentPlayer = target; + //var currentTime = currentPlayer.getCurrentTime(); + var currentPlayer = $(currentIframe).data("togetherjs-player"); + var currentTime = target.k.currentTime; + var iframeLocation = elementFinder.elementLocation(currentIframe); + + if ($(currentPlayer).data("seek")) { + $(currentPlayer).removeData("seek"); + return; + } + + // do not publish if playerState was changed by other users + if ($(currentIframe).data("dontPublish")) { + // make it false again so it can start publishing events of its own state changes + $(currentIframe).data("dontPublish", false); + return; + } + + // notify other people that I changed the player state + if (event.data == YT.PlayerState.PLAYING) { + + var currentVideoId = isDifferentVideoLoaded(currentIframe); + if (currentVideoId) { + // notify that I just loaded another video + publishDifferentVideoLoaded(iframeLocation, currentVideoId); + // update current video id + $(currentIframe).data("currentVideoId", currentVideoId); + } else { + session.send({ + type: "playerStateChange", + element: iframeLocation, + playerState: 1, + playerTime: currentTime + }); + } + } else if (event.data == YT.PlayerState.PAUSED) { + session.send({ + type: "playerStateChange", + element: iframeLocation, + playerState: 2, + playerTime: currentTime + }); + } else { + // do nothing when the state is buffering, cued, or ended + return; + } + } + + function publishDifferentVideoLoaded(iframeLocation, videoId) { + session.send({ + type: "differentVideoLoaded", + videoId: videoId, + element: iframeLocation + }); + } + + session.hub.on('playerStateChange', function (msg) { + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + var currentTime = player.getCurrentTime(); + var currentState = player.getPlayerState(); + + if (currentState != msg.playerState) { + $(iframe).data("dontPublish", true); + } + + if (msg.playerState == 1) { + player.playVideo(); + // seekTo() updates the video's time and plays it if it was already playing + // and pauses it if it was already paused + if (areTooFarApart(currentTime, msg.playerTime)) { + player.seekTo(msg.playerTime, true); + } + } else if (msg.playerState == 2) { + // When YouTube videos are advanced while playing, + // Chrome: pause -> pause -> play (onStateChange is called even when it is from pause to pause) + // FireFox: buffering -> play -> buffering -> play + // We must prevent advanced videos from going out of sync + player.pauseVideo(); + if (areTooFarApart(currentTime, msg.playerTime)) { + // "seek" flag will help supress publishing unwanted state changes + $(player).data("seek", true); + player.seekTo(msg.playerTime, true); + } + } + }); + + // if a late user joins a channel, synchronize his videos + session.hub.on('hello', function () { + // wait a couple seconds to make sure the late user has finished loading API + setTimeout(synchronizeVideosOfLateGuest, API_LOADING_DELAY); + }); + + session.hub.on('synchronizeVideosOfLateGuest', function (msg) { + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + // check if another video had been loaded to an existing iframe before I joined + var currentVideoId = $(iframe).data("currentVideoId"); + if (msg.videoId != currentVideoId) { + $(iframe).data("currentVideoId", msg.videoId); + player.loadVideoById(msg.videoId, msg.playerTime, 'default'); + } else { + // if the video is only cued, I do not have to do anything to sync + if (msg.playerState != 5) { + player.seekTo(msg.playerTime, true); + } + } + }); + + session.hub.on('differentVideoLoaded', function (msg) { + // load a new video if the host has loaded one + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + player.loadVideoById(msg.videoId, 0, 'default'); + $(iframe).data("currentVideoId", msg.videoId); + + }); + + function synchronizeVideosOfLateGuest() { + youTubeIframes.forEach(function (iframe) { + var currentPlayer = $(iframe).data("togetherjs-player"); + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + var currentState = currentPlayer.getPlayerState(); + var currentTime = currentPlayer.getCurrentTime(); + var iframeLocation = elementFinder.elementLocation(iframe); + session.send({ + type: "synchronizeVideosOfLateGuest", + element: iframeLocation, + videoId: currentVideoId, + playerState: currentState, //this might be necessary later + playerTime: currentTime + }); + }); + } + + function isDifferentVideoLoaded(iframe) { + var lastVideoId = $(iframe).data("currentVideoId"); + var currentPlayer = $(iframe).data("togetherjs-player"); + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + + // since url forms of iframe src and player's video url are different, + // I have to compare the video ids + if (currentVideoId != lastVideoId) { + return currentVideoId; + } else { + return false; + } + } + + // parses videoId from the url returned by getVideoUrl function + function getVideoIdFromUrl(videoUrl) { + var videoId = videoUrl.split('v=')[1]; + //Chrome and Firefox have different positions for parameters + var ampersandIndex = videoId.indexOf('&'); + if (ampersandIndex != -1) { + videoId = videoId.substring(0, ampersandIndex); + } + return videoId; + } + + function areTooFarApart(myTime, theirTime) { + var secDiff = Math.abs(myTime - theirTime); + var milliDiff = secDiff * 1000; + return milliDiff > TOO_FAR_APART; + } +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('templates-en-US',[], function () { + return { + "interface": "<% /*\n This is basically all the markup and interface for TogetherJS.\n Note all links should be like http://localhost:8080/togetherjs/*\n these links are rewritten with the location where TogetherJS was deployed.\n\n This file is inlined into togetherjs/templates.js\n*/ %>\n
      \n\n \n
      \n
      \n \n \"drag\"\n \n \n \"drag\"\n \n
      \n
      \n
      \n \n
      \n \n \n \n \n
      \n
      \n
      \n\n \n
      \n
      Update avatar
      \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n \n or\n \n
      \n
      \n\n \n
      \n
      Invite a friend
      \n
      \n
      \n

      Copy and paste this link over IM or email:

      \n \n
      \n
      \n

      Copy and paste this link over IM or email:

      \n \n \n
      \n
      \n
      \n\n \n
      \n
      Participants
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      \n\n
      \n

      Role:\n \n

      \n\n

      Currently at:\n \n

      \n\n

      Status:\n \n

      \n\n

      Follow this participant:\n \n \n

      \n\n
      \n\n
      \n \n \n \n
      \n is on the same page as you.\n
      \n
      \n
      \n\n \n
      \n
      Chat
      \n
      \n
      \n \n & You\n
      \n \n
      \n Nobody is here yet. Please wait ...\n
      \n\n
      \n\n
      \n\n \n
      \n
      \n
      HH:MM AM/PM
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      left the session.
      \n
      \n
      \n
      declined to join the session.
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      joined the session.
      \n
      \n
      \n\n \n
      \n \n
      \n\n \n \n\n \n
      \n
      \n
      \n
      \n \n is on the same page as you.\n
      \n
      \n \n has gone to: \n
      \n \n \n
      \n\n \n\n
      \n
      \n
      \n
      \n
      \n\n
      \n \n
      \n
      \n \n
      \n
      \n\n \n
      \n\n
      Audio Chat
      \n
      \n

      \n Activate your browser microphone near your URL bar above.\n

      \n

      \n Talking on your microphone through your web browser is an experimental feature.\n

      \n

      \n Read more about Audio Chat here.\n

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Audio Chat
      \n\n
      \n

      Audio chat requires you to use a newer browser!

      \n

      \n Live audio chat requires a newer (or different) browser than you're using.\n

      \n

      \n See this pagefor more information and a list of supported browsers.\n

      \n
      \n\n
      \n
      \n \n
      \n
      \n
      \n\n \n
      \n \"\"\n \"[close]\"\n
      \n
      \n
      \n\n \n
      \n
      \n \n [nickname]\n \n
      \n
      \n
      \"\" Update your name
      \n
      \"\" Change avatar
      \n
      Pick profile color
      \n
      \n
      Help
      \n
      Feedback
      \n
      \n
      \n
      \n
      Refresh users
      \n
      Invite anyone
      \n
      \n
      \n
      \"\" End TogetherJS
      \n
      \n\n \n
      \n
      \n \n \n
      \n
      \n\n \n
      \n
      Settings and Profile
      \n
      \n
      \n \n \n
      \n
      \n
      \"\" Update your name
      \n
      \"\" Change avatar
      \n
      Pick profile color
      \n
      \n
      Help
      \n
      Feedback
      \n
      \n
      \"\" End TOOL_NAME
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      Update Name
      \n
      \n
      \n \n
      \n
      \n
      \n \n
      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n \n \n \n\n \n
      \n
      Join TOOL_NAME session?
      \n
      \n

      Your friend has asked you to join their TOOL_SITE_LINK browser session to collaborate in real-time!

      \n

      Would you like to join their session?

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Sorry
      \n\n
      \n

      \n We're sorry, TOOL_NAME doesn't work with this browser. Please upgrade to a supported browser to try TOOL_NAME.\n

      \n\n

      \n We need your help fixing TogetherJS on Internet Explorer! Here are a list of IE GitHub issues we need fixed that you can work on.\n Internet Explorer is currently not supported. If you do want to try out TogetherJS, we'd suggest using Firefox or Chrome.\n

      \n
      \n\n
      \n \n
      \n\n
      \n\n \n
      \n
      Unsupported Browser
      \n\n
      \n

      \n We need your help fixing TogetherJS on Internet Explorer! Here are a list of IE GitHub issues we need fixed that you can work on.\n Internet Explorer is currently not supported. If you do want to try out TogetherJS, we'd suggest using Firefox or Chrome.\n

      \n\n

      You can continue to try to use TOOL_NAME, but you are likely to hit lots of bugs. So be warned.

      \n\n
      \n\n
      \n \n \n
      \n\n
      \n\n
      \n
      End session?
      \n
      \n

      \n Are you sure you'd like to end your TOOL_NAME session?\n

      \n
      \n
      \n \n or\n \n
      \n
      \n\n
      \n
      Feedback
      \n \n \n
      \n\n
      \n \n
      \n
      Following to new URL...
      \n
      \n
      \n Following\n \n to \n
      \n
      \n\n \n
      \n
      \n
      \n \n has invited anyone\n you\n to \n
      \n
      \n\n
      \n\n \n
      \n
      \n\n \n
      \n\n \n
      \n\n \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n
      \n\n \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      \n", + walkthrough: "\n
      \n
      You're using TOOL_NAME!
      \n\n
      \n
      \n\n
      \n

      \n\t

      TOOL_NAME is a service for your website that makes it easy to collaborate in real-time on SITE_NAME

      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n

      Set up your avatar, name and user color above. If you'd like to update it later, you can click your Profile button.

      \n
      \n
      \n

      \n

      Change your avatar, name and user color using the Profile button.

      \n
      \n
      \n\n
      \n

      \n

      \n

      You can invite more friends to the session by sending the invite link in the TOOL_NAME dock.

      \n

      \n \n Copy and paste this link into IM or email to invite friends.\n \n \n

      \n

      Send the above link to a friend so they can join your session! You can find this invite link on the TOOL_NAME dock as well.

      \n
      \n\n
      \n

      \n

      Friends who join your TOOL_NAME session will appear here. You can click their avatars to see more.

      \n
      \n\n
      \n

      \n

      When your friends join you in your TOOL_NAME session, you can chat with them here!

      \n
      \n\n
      \n

      \n

      If your browser supports it, click the microphone icon to begin a audio chat. Learn more about this experimental feature here.

      \n
      \n\n
      \n

      \n

      Alright, you're ready to use TOOL_NAME. Now start collaborating on SITE_NAME!

      \n
      \n\n
      \n \n \n
      \n
      \n
      \n\n
      \n \n
      \n\n
      \n", + names: "Friendly Fox, Brilliant Beaver, Observant Owl, Gregarious Giraffe, Wild Wolf, Silent Seal, Wacky Whale, Curious Cat, Intelligent Iguana" + }; +}); + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define('templates-ru',[], function () { + return { + "interface": "<% /*\n This is basically all the markup and interface for TogetherJS.\n Note all links should be like http://localhost:8080/togetherjs/*\n these links are rewritten with the location where TogetherJS was deployed.\n\n This file is inlined into togetherjs/templates.js\n*/ %>\n
      \n\n \n
      \n
      \n \n \"drag\"\n \n \n \"drag\"\n \n
      \n
      \n
      \n \n
      \n \n \n \n \n
      \n
      \n
      \n\n \n
      \n
      Обновить аватар
      \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n \n или\n \n
      \n
      \n\n \n
      \n
      Пригласить друга
      \n
      \n
      \n

      Скопируйте эту ссылку и приклейте её в IM или в имейл:

      \n \n
      \n
      \n

      Скопируйте эту ссылку и приклейте её в IM или в имейл:

      \n \n \n
      \n
      \n
      \n\n \n
      \n
      Участники
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      \n\n
      \n

      Роль:\n \n

      \n\n

      Сейчас на:\n \n

      \n\n

      Статус:\n \n

      \n\n

      Следовать за этим участником:\n \n \n

      \n\n
      \n\n
      \n \n \n \n
      \n с Вами на одной странице.\n
      \n
      \n
      \n\n \n
      \n
      Чат
      \n
      \n
      \n \n & Вы\n
      \n \n
      \n Nobody is here yet. Please wait ...\n
      \n\n
      \n\n
      \n\n \n
      \n
      \n
      HH:MM AM/PM
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      покинул сеанс.
      \n
      \n
      \n
      отказался присоединиться к сеансу.
      \n
      \n
      \n
      \n\n \n
      \n
      \n
      присоединился к сеансу.
      \n
      \n
      \n\n \n
      \n \n
      \n\n \n \n\n \n
      \n
      \n
      \n
      \n \n с Вами на одной странице.\n
      \n
      \n \n отправился на: \n
      \n \n \n
      \n\n \n\n
      \n
      \n
      \n
      \n
      \n\n
      \n \n
      \n
      \n \n
      \n
      \n\n \n
      \n\n
      Аудио-чат
      \n
      \n

      \n Включите микрофон браузера возле адресной строки вверху.\n

      \n

      \n Разговор по микрофону через веб-браузер - экспериментальное свойство.\n

      \n

      \n Почитайте больше об аудио-чате здесь.\n

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Аудио-чат
      \n\n
      \n

      Аудио-чат требует, чтобы Вы использовалибраузер поновее!

      \n

      \n Для живого аудио-чата требуется более новый (или другой) браузер, чем тот, который Вы используете.\n

      \n

      \n Посмотрите на 'этой странице' дополнительную информацию и список поддерживаемых браузеров.\n

      \n
      \n\n
      \n
      \n \n
      \n
      \n
      \n\n \n
      \n \"\"\n \"[close]\"\n
      \n
      \n
      \n\n \n
      \n
      \n \n [nickname]\n \n
      \n
      \n
      \"\" Обновить своё имя
      \n
      \"\" Изменить аватар
      \n
      Выбрать цвет профиля
      \n
      \n
      Помощь
      \n
      Отзывы и предложения
      \n
      \n
      \n
      \n
      Refresh users
      \n
      Пригласить кого-нибудь
      \n
      \n
      \n
      \"\" Закончить TogetherJS
      \n
      \n\n \n
      \n
      \n \n \n
      \n
      \n\n \n
      \n
      Установки и профиль
      \n
      \n
      \n \n \n
      \n
      \n
      \"\" Обновить своё имя
      \n
      \"\" Изменить аватар
      \n
      Выбрать цвет профиля
      \n
      \n
      Помощь
      \n
      Отзывы и предложения
      \n
      \n
      \"\" Закончить TOOL_NAME
      \n
      \n
      \n \n
      \n
      \n\n \n
      \n
      Обновить имя
      \n
      \n
      \n \n
      \n
      \n
      \n \n
      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n\n \n \n \n \n\n \n
      \n
      Присоединиться к сеансу TOOL_NAME?
      \n
      \n

      Ваш друг просит Вас присоединиться к его TOOL_SITE_LINK браузер-сеансу, чтобы сотрудничать с Вами в реальном времени!

      \n

      Хотели бы Вы присоединиться к его сеансу?

      \n
      \n\n
      \n \n \n
      \n
      \n\n \n
      \n
      Извините
      \n\n
      \n

      \n Извините, TOOL_NAME не работает на этом браузере. Просьба обновиться до поддерживаемого браузера, чтобы попробовать TOOL_NAME.\n

      \n\n

      \n Нам нужна Ваша помощь в починке TogetherJS на Internet Explorer! Вот список ошибок на GitHub, которые нам нужно починить, и над которыми Вы можете поработать.\n Internet Explorer в настоящее время не поддерживается. Если Вы действительно хотите испытать TogetherJS, советуем Вам использовать Firefox или Chrome.\n

      \n
      \n\n
      \n \n
      \n\n
      \n\n \n
      \n
      Браузер не поддерживается
      \n\n
      \n

      \n Нам нужна Ваша помощь в починке TogetherJS на Internet Explorer! Вот список ошибок на GitHub, которые нам нужно починить, и над которыми Вы можете поработать.\n Internet Explorer в настоящее время не поддерживается. Если Вы действительно хотите испытать TogetherJS, советуем Вам использовать Firefox или Chrome.\n

      \n\n

      Вы можете продолжать пробовать использовать TOOL_NAME, но скорее всего Вы получите массу ошибок. Мы Вас предупредили.

      \n\n
      \n\n
      \n \n \n
      \n\n
      \n\n
      \n
      Закончить сеанс?
      \n
      \n

      \n Вы уверены, что хотите завершить свой сеанс TOOL_NAME?\n

      \n
      \n
      \n \n или\n \n
      \n
      \n\n
      \n
      Отзывы и предложения
      \n \n \n
      \n\n
      \n \n
      \n
      Следую на новый URL...
      \n
      \n
      \n Следую\n \n на \n
      \n
      \n\n \n
      \n
      \n
      \n \n пригласил кого-либо\n Вас\n на \n
      \n
      \n\n
      \n\n \n
      \n
      \n\n \n
      \n\n \n
      \n\n \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n
      \n\n \n
      \n
      \n
      \n\n \n
      \n
      \n
      \n
      \n", + walkthrough: "\n
      \n
      Вы используете TOOL_NAME!
      \n\n
      \n
      \n\n
      \n

      \n\t

      TOOL_NAME - это служба для Вашего сайта, которая помогает Вам сотрудничать с другими в реальном времени на сайте SITE_NAME

      \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n \n
      \n
      \n \n
      \n
      \n

      Задайте свои аватар, имя и пользовательский цвет вверху. При желании изменить их позднее, щёлкните по кнопке Профиль.

      \n
      \n
      \n

      \n

      Вы можете изменить свои аватар, имя и пользовательский цвет, используя кнопку Профиль.

      \n
      \n
      \n\n
      \n

      \n

      \n

      Вы можете пригласить ещё друзей на Ваш сеанс, послав им ссылку с приглашением на панели TOOL_NAME.

      \n

      \n \n Скопируйте и приклейте эту ссылку в IM или в имейл, чтобы пригласить друзей.
      \n
      \n \n

      \n

      Пошлите другу ссылку вверху, чтобы он мог присоединиться к Вашему сеансу! Вы также можете найти эту ссылку с приглашением на панели TOOL_NAME.

      \n
      \n\n
      \n

      \n

      Друзья, которые присоединятся к Вашему сеансу TOOL_NAME, появятся здесь. Вы можете щёлкнуть по аватару друга, чтобы увидеть больше информации.

      \n
      \n\n
      \n

      \n

      Когда Ваши друзья присоединятся к Вашему сеансу TOOL_NAME, Вы сможете общаться с ними здесь!

      \n
      \n\n
      \n

      \n

      Если Ваш браузер поддерживает аудио-чат, Вы можете запустить его нажатием на иконку микрофона. Узнайте побольше об этой экспериментальной функции здесь.

      \n
      \n\n
      \n

      \n

      Ну вот Вы и готовы использовать TOOL_NAME. Теперь начинайте сотрудничать на сайте SITE_NAME!

      \n
      \n\n
      \n \n \n
      \n
      \n
      \n\n
      \n \n
      \n\n
      \n", + names: "Лысый Лис, Большой Бобёр, Умная Сова, Жирный Жираф, Серый Волк, Толстый Тюлень, Рыба-кит, Кисьян Котяра, Известная Игуана" + }; +}); + +TogetherJS.require = TogetherJS._requireObject = require; +TogetherJS._loaded = true; +require(["session"]); +}()); \ No newline at end of file diff --git a/v3/js/togetherjs/togetherjs/ui.js b/v3/js/togetherjs/togetherjs/ui.js new file mode 100644 index 000000000..109845219 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/ui.js @@ -0,0 +1,1516 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["require", "jquery", "util", "session", "templates", "templating", "linkify", "peers", "windowing", "tinycolor", "elementFinder", "visibilityApi"], function (require, $, util, session, templates, templating, linkify, peers, windowing, tinycolor, elementFinder, visibilityApi) { + var ui = util.Module('ui'); + var assert = util.assert; + var AssertionError = util.AssertionError; + var chat; + var $window = $(window); + // This is also in togetherjs.less, as @button-height: + var BUTTON_HEIGHT = 60 + 1; // 60 is button height, 1 is border + // chat TextArea + var TEXTAREA_LINE_HEIGHT = 20; // in pixels + var TEXTAREA_MAX_LINES = 5; + // This is also in togetherjs.less, under .togetherjs-animated + var ANIMATION_DURATION = 1000; + // Time the new user window sticks around until it fades away: + var NEW_USER_FADE_TIMEOUT = 5000; + // This is set when an animation will keep the UI from being ready + // (until this time): + var finishedAt = null; + // Time in milliseconds for the dock to animate out: + var DOCK_ANIMATION_TIME = 300; + // If two chat messages come from the same person in this time + // (milliseconds) then they are collapsed into one message: + var COLLAPSE_MESSAGE_LIMIT = 5000; + + var COLORS = [ + "#8A2BE2", "#7FFF00", "#DC143C", "#00FFFF", "#8FBC8F", "#FF8C00", "#FF00FF", + "#FFD700", "#F08080", "#90EE90", "#FF6347"]; + + // This would be a circular import, but we just need the chat module sometime + // after everything is loaded, and this is sure to complete by that time: + require(["chat"], function (c) { + chat = c; + }); + + /* Displays some toggleable element; toggleable elements have a + data-toggles attribute that indicates what other elements should + be hidden when this element is shown. */ + ui.displayToggle = function (el) { + el = $(el); + assert(el.length, "No element", arguments[0]); + var other = $(el.attr("data-toggles")); + assert(other.length, "Cannot toggle", el[0], "selector", other.selector); + other.hide(); + el.show(); + }; + + function panelPosition() { + var iface = $("#togetherjs-dock"); + if (iface.hasClass("togetherjs-dock-right")) { + return "right"; + } else if (iface.hasClass("togetherjs-dock-left")) { + return "left"; + } else if (iface.hasClass("togetherjs-dock-bottom")) { + return "bottom"; + } else { + throw new AssertionError("#togetherjs-dock doesn't have positioning class"); + } + } + + ui.container = null; + + // This is used for some signalling when ui.prepareUI and/or + // ui.activateUI is called before the DOM is fully loaded: + var deferringPrepareUI = null; + + function deferForContainer(func) { + /* Defers any calls to func() until after ui.container is set + Function cannot have a return value (as sometimes the call will + become async). Use like: + + method: deferForContainer(function (args) {...}) + */ + return function () { + if (ui.container) { + func.apply(this, arguments); + } + var self = this; + var args = Array.prototype.slice.call(arguments); + session.once("ui-ready", function () { + func.apply(self, args); + }); + }; + } + + // This is called before activateUI; it doesn't bind anything, but does display + // the dock + // FIXME: because this module has lots of requirements we can't do + // this before those requirements are loaded. Maybe worth splitting + // this out? OTOH, in production we should have all the files + // combined so there's not much problem loading those modules. + ui.prepareUI = function () { + if (! (document.readyState == "complete" || document.readyState == "interactive")) { + // Too soon! Wait a sec... + deferringPrepareUI = "deferring"; + document.addEventListener("DOMContentLoaded", function () { + var d = deferringPrepareUI; + deferringPrepareUI = null; + ui.prepareUI(); + // This happens when ui.activateUI is called before the document has been + // loaded: + if (d == "activate") { + ui.activateUI(); + } + }); + return; + } + var container = ui.container = $(templates("interface")); + assert(container.length); + $("body").append(container); + fixupAvatars(container); + if (session.firstRun && TogetherJS.startTarget) { + // Time at which the UI will be fully ready: + // (We have to do this because the offset won't be quite right + // until the animation finishes - attempts to calculate the + // offset without taking into account CSS transforms have so far + // failed.) + var timeoutSeconds = DOCK_ANIMATION_TIME / 1000; + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 50; + setTimeout(function () { + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 40; + var iface = container.find("#togetherjs-dock"); + var start = iface.offset(); + var pos = $(TogetherJS.startTarget).offset(); + pos.top = Math.floor(pos.top - start.top); + pos.left = Math.floor(pos.left - start.left); + var translate = "translate(" + pos.left + "px, " + pos.top + "px)"; + iface.css({ + MozTransform: translate, + WebkitTransform: translate, + transform: translate, + opacity: "0.0" + }); + setTimeout(function () { + // We keep recalculating because the setTimeout times aren't always so accurate: + finishedAt = Date.now() + DOCK_ANIMATION_TIME + 20; + var transition = "transform " + timeoutSeconds + "s ease-out, "; + transition += "opacity " + timeoutSeconds + "s ease-out"; + iface.css({ + opacity: "1.0", + MozTransition: "-moz-" + transition, + MozTransform: "translate(0, 0)", + WebkitTransition: "-webkit-" + transition, + WebkitTransform: "translate(0, 0)", + transition: transition, + transform: "translate(0, 0)" + }); + setTimeout(function () { + finishedAt = null; + iface.attr("style", ""); + }, 510); + }, 5); + }, 5); + } + if (TogetherJS.startTarget) { + var el = $(TogetherJS.startTarget); + var text = el.text().toLowerCase().replace(/\s+/g, " "); + text = text.replace(/^\s*/, "").replace(/\s*$/, ""); + if (text == "start togetherjs") { + el.attr("data-end-togetherjs-html", "End TogetherJS"); + } + if (el.attr("data-end-togetherjs-html")) { + el.attr("data-start-togetherjs-html", el.html()); + el.html(el.attr("data-end-togetherjs-html")); + } + el.addClass("togetherjs-started"); + } + ui.container.find(".togetherjs-window > header, .togetherjs-modal > header").each(function () { + $(this).append($('')); + }); + + TogetherJS.config.track("disableWebRTC", function (hide, previous) { + if (hide && ! previous) { + ui.container.find("#togetherjs-audio-button").hide(); + adjustDockSize(-1); + } else if ((! hide) && previous) { + ui.container.find("#togetherjs-audio-button").show(); + adjustDockSize(1); + } + }); + + // pgbovine -- disable the user profile and "Invite a friend" link dialogs + ui.container.find("#togetherjs-profile-button").hide(); + ui.container.find("#togetherjs-share-button").hide(); + adjustDockSize(-2); + + }; + + // After prepareUI, this actually makes the interface live. We have + // to do this later because we call prepareUI when many components + // aren't initialized, so we don't even want the user to be able to + // interact with the interface. But activateUI is called once + // everything is loaded and ready for interaction. + ui.activateUI = function () { + if (deferringPrepareUI) { + console.warn("ui.activateUI called before document is ready; waiting..."); + deferringPrepareUI = "activate"; + return; + } + if (! ui.container) { + ui.prepareUI(); + } + var container = ui.container; + + //create the overlay + if($.browser.mobile) { + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: 0; background-color: rgba(0,0,0,0); width: 120%; height: 100%; z-index: 1000; margin: -10px'>\x3c/div>" ); + } + + // The share link: + ui.prepareShareLink(container); + container.find("input.togetherjs-share-link").on("keydown", function (event) { + if (event.which == 27) { + windowing.hide("#togetherjs-share"); + return false; + } + return undefined; + }); + session.on("shareId", updateShareLink); + + // The chat input element: + var input = container.find("#togetherjs-chat-input"); + input.bind("keydown", function (event) { + if (event.which == 13 && !event.shiftKey) { // Enter without Shift pressed + submitChat(); + return false; + } + if (event.which == 27) { // Escape + windowing.hide("#togetherjs-chat"); + return false; + } + }); + + function submitChat() { + var val = input.val(); + if ($.trim(val)) { + input.val(""); + // triggering the event manually to avoid the addition of newline character to the textarea: + input.trigger("input").trigger("propertychange"); + chat.submit(val); + } + } + // auto-resize textarea: + input.on("input propertychange", function () { + var $this = $(this); + var actualHeight = $this.height(); + // reset the height of textarea to remove trailing empty space (used for shrinking): + $this.height(TEXTAREA_LINE_HEIGHT); + this.scrollTop = 0; + // scroll to bottom: + this.scrollTop = 9999; + var newHeight = this.scrollTop + $this.height(); + var maxHeight = TEXTAREA_MAX_LINES * TEXTAREA_LINE_HEIGHT; + if (newHeight > maxHeight) { + newHeight = maxHeight; + this.style.overflowY = "scroll"; + } else { + this.style.overflowY = "hidden"; + } + this.style.height = newHeight + "px"; + var diff = newHeight - actualHeight; + $("#togetherjs-chat-input-box").height($("#togetherjs-chat-input-box").height() + diff); + $("#togetherjs-chat-messages").height($("#togetherjs-chat-messages").height() - diff); + return false; + }); + + util.testExpose({submitChat: submitChat}); + + // Moving the window: + // FIXME: this should probably be stickier, and not just move the window around + // so abruptly + var anchor = container.find("#togetherjs-dock-anchor"); + assert(anchor.length); + // FIXME: This is in place to temporarily disable dock dragging: + anchor = container.find("#togetherjs-dock-anchor-disabled"); + anchor.mousedown(function (event) { + var iface = $("#togetherjs-dock"); + // FIXME: switch to .offset() and pageX/Y + var startPos = panelPosition(); + function selectoff() { + return false; + } + function mousemove(event2) { + var fromRight = $window.width() + window.pageXOffset - event2.pageX; + var fromLeft = event2.pageX - window.pageXOffset; + var fromBottom = $window.height() + window.pageYOffset - event2.pageY; + // FIXME: this is to temporarily disable the bottom view: + fromBottom = 10000; + + var pos; + if (fromLeft < fromRight && fromLeft < fromBottom) { + pos = "left"; + } else if (fromRight < fromLeft && fromRight < fromBottom) { + pos = "right"; + } else { + pos = "bottom"; + } + iface.removeClass("togetherjs-dock-left"); + iface.removeClass("togetherjs-dock-right"); + iface.removeClass("togetherjs-dock-bottom"); + iface.addClass("togetherjs-dock-" + pos); + if (startPos && pos != startPos) { + windowing.hide(); + startPos = null; + } + } + $(document).bind("mousemove", mousemove); + // If you don't turn selection off it will still select text, and show a + // text selection cursor: + $(document).bind("selectstart", selectoff); + // FIXME: it seems like sometimes we lose the mouseup event, and it's as though + // the mouse is stuck down: + $(document).one("mouseup", function () { + $(document).unbind("mousemove", mousemove); + $(document).unbind("selectstart", selectoff); + }); + return false; + }); + + function openDock() { + $('.togetherjs-window').animate({ + opacity: 1 + }); + $('#togetherjs-dock-participants').animate({ + opacity: 1 + }); + $('#togetherjs-dock #togetherjs-buttons').animate({ + opacity: 1 + }); + + //for iphone + if($(window).width() < 480) { + $('.togetherjs-dock-right').animate({ + width: "204px" + }, { + duration:60, easing:"linear" + }); + } + + //for ipad + else { + $('.togetherjs-dock-right').animate({ + width: "27%" + }, { + duration:60, easing:"linear" + }); + } + + + // add bg overlay + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: -2px; background-color: rgba(0,0,0,0.5); width: 200%; height: 400%; z-index: 1000; margin: 0px;'>\x3c/div>" ); + + //disable vertical scrolling + // $("body").css({ + // "position": "fixed", + // top: 0, + // left: 0 + // }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-close.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + } + + function closeDock() { + //enable vertical scrolling + $("body").css({ + "position": "", + top: "", + left: "" + }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-open.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + + $('.togetherjs-window').animate({ + opacity: 0 + }); + $('#togetherjs-dock-participants').animate({ + opacity: 0 + }); + $('#togetherjs-dock #togetherjs-buttons').animate({ + opacity: 0 + }); + $('.togetherjs-dock-right').animate({ + width: "40px" + }, { + duration:60, easing:"linear" + }); + + // remove bg overlay + //$(".overlay").remove(); + } + + // Setting the anchor button + dock mobile actions + if($.browser.mobile) { + + // toggle the audio button + $("#togetherjs-audio-button").click(function () { + windowing.toggle("#togetherjs-rtc-not-supported"); + }); + + // toggle the profile button + $("#togetherjs-profile-button").click(function () { + windowing.toggle("#togetherjs-menu-window"); + }); + + // $("body").append( "\x3cdiv class='overlay' style='position: absolute; top: 0; left: -2px; background-color: rgba(0,0,0,0.5); width: 200%; height: 400%; z-index: 1000; margin: 0px'>\x3c/div>" ); + + //disable vertical scrolling + // $("body").css({ + // "position": "fixed", + // top: 0, + // left: 0 + // }); + + //replace the anchor icon + var src = "/togetherjs/images/togetherjs-logo-close.png"; + $("#togetherjs-dock-anchor #togetherjs-dock-anchor-horizontal img").attr("src", src); + + $("#togetherjs-dock-anchor").toggle(function() { + closeDock(); + },function(){ + openDock(); + }); + } + + $("#togetherjs-share-button").click(function () { + windowing.toggle("#togetherjs-share"); + }); + + $("#togetherjs-profile-button").click(function (event) { + if ($.browser.mobile) { + windowing.show("#togetherjs-menu-window"); + return false; + } + toggleMenu(); + event.stopPropagation(); + return false; + }); + + $("#togetherjs-menu-feedback, #togetherjs-menu-feedback-button").click(function(){ + windowing.hide(); + hideMenu(); + windowing.show("#togetherjs-feedback-form"); + }); + + $("#togetherjs-menu-help, #togetherjs-menu-help-button").click(function () { + windowing.hide(); + hideMenu(); + require(["walkthrough"], function (walkthrough) { + windowing.hide(); + walkthrough.start(false); + }); + }); + + $("#togetherjs-menu-update-name").click(function () { + var input = $("#togetherjs-menu .togetherjs-self-name"); + input.css({ + width: $("#togetherjs-menu").width() - 32 + "px" + }); + ui.displayToggle("#togetherjs-menu .togetherjs-self-name"); + $("#togetherjs-menu .togetherjs-self-name").focus(); + }); + + $("#togetherjs-menu-update-name-button").click(function () { + windowing.show("#togetherjs-edit-name-window"); + $("#togetherjs-edit-name-window input").focus(); + }); + + $("#togetherjs-menu .togetherjs-self-name").bind("keyup change", function (event) { + console.log("alrighty", event); + if (event.which == 13) { + ui.displayToggle("#togetherjs-self-name-display"); + return; + } + var val = $("#togetherjs-menu .togetherjs-self-name").val(); + console.log("values!!", val); + if (val) { + peers.Self.update({name: val}); + } + }); + + $("#togetherjs-menu-update-avatar, #togetherjs-menu-update-avatar-button").click(function () { + hideMenu(); + windowing.show("#togetherjs-avatar-edit"); + }); + + $("#togetherjs-menu-end, #togetherjs-menu-end-button").click(function () { + hideMenu(); + windowing.show("#togetherjs-confirm-end"); + }); + + $("#togetherjs-end-session").click(function () { + session.close(); + //$(".overlay").remove(); + + }); + + $("#togetherjs-menu-update-color").click(function () { + var picker = $("#togetherjs-pick-color"); + if (picker.is(":visible")) { + picker.hide(); + return; + } + picker.show(); + bindPicker(); + picker.find(".togetherjs-swatch-active").removeClass("togetherjs-swatch-active"); + picker.find(".togetherjs-swatch[data-color=\"" + peers.Self.color + "\"]").addClass("togetherjs-swatch-active"); + }); + + $("#togetherjs-pick-color").click(".togetherjs-swatch", function (event) { + var swatch = $(event.target); + var color = swatch.attr("data-color"); + peers.Self.update({ + color: color + }); + event.stopPropagation(); + return false; + }); + + $("#togetherjs-pick-color").click(function (event) { + $("#togetherjs-pick-color").hide(); + event.stopPropagation(); + return false; + }); + + COLORS.forEach(function (color) { + var el = templating.sub("swatch"); + el.attr("data-color", color); + var darkened = tinycolor.darken(color); + el.css({ + backgroundColor: color, + borderColor: darkened + }); + $("#togetherjs-pick-color").append(el); + }); + + $("#togetherjs-chat-button").click(function () { + windowing.toggle("#togetherjs-chat"); + }); + + session.on("display-window", function (id, element) { + if (id == "togetherjs-chat") { + if (! $.browser.mobile) { + $("#togetherjs-chat-input").focus(); + } + } else if (id == "togetherjs-share") { + var link = element.find("input.togetherjs-share-link"); + if (link.is(":visible")) { + link.focus().select(); + } + } + }); + + container.find("#togetherjs-chat-notifier").click(function (event) { + if ($(event.target).is("a") || container.is(".togetherjs-close")) { + return; + } + windowing.show("#togetherjs-chat"); + }); + + // FIXME: Don't think this makes sense + $(".togetherjs header.togetherjs-title").each(function (index, item) { + var button = $(''); + button.click(function (event) { + var window = button.closest(".togetherjs-window"); + windowing.hide(window); + }); + $(item).append(button); + }); + + $("#togetherjs-avatar-done").click(function () { + ui.displayToggle("#togetherjs-no-avatar-edit"); + }); + + $("#togetherjs-self-color").css({backgroundColor: peers.Self.color}); + + var avatar = peers.Self.avatar; + if (avatar) { + $("#togetherjs-self-avatar").attr("src", avatar); + } + + var starterButton = $("#togetherjs-starter button"); + starterButton.click(function () { + windowing.show("#togetherjs-about"); + }).addClass("togetherjs-running"); + if (starterButton.text() == "Start TogetherJS") { + starterButton.attr("data-start-text", starterButton.text()); + starterButton.text("End TogetherJS Session"); + } + + ui.activateAvatarEdit(container, { + onSave: function () { + windowing.hide("#togetherjs-avatar-edit"); + } + }); + + TogetherJS.config.track("inviteFromRoom", function (inviter, previous) { + if (inviter) { + container.find("#togetherjs-invite").show(); + } else { + container.find("#togetherjs-invite").hide(); + } + }); + + container.find("#togetherjs-menu-refresh-invite").click(refreshInvite); + container.find("#togetherjs-menu-invite-anyone").click(function () { + invite(null); + }); + + // The following lines should be at the end of this function + // (new code goes above) + session.emit("new-element", ui.container); + + if (finishedAt && finishedAt > Date.now()) { + setTimeout(function () { + finishedAt = null; + session.emit("ui-ready", ui); + }, finishedAt - Date.now()); + } else { + session.emit("ui-ready", ui); + } + + }; // End ui.activateUI() + + ui.activateAvatarEdit = function (container, options) { + options = options || {}; + var pendingImage = null; + + container.find(".togetherjs-avatar-save").prop("disabled", true); + + container.find(".togetherjs-avatar-save").click(function () { + if (pendingImage) { + peers.Self.update({avatar: pendingImage}); + container.find(".togetherjs-avatar-save").prop("disabled", true); + if (options.onSave) { + options.onSave(); + } + } + }); + + container.find(".togetherjs-upload-avatar").on("change", function () { + util.readFileImage(this).then(function (url) { + sizeDownImage(url).then(function (smallUrl) { + pendingImage = smallUrl; + container.find(".togetherjs-avatar-preview").css({ + backgroundImage: 'url(' + pendingImage + ')' + }); + container.find(".togetherjs-avatar-save").prop("disabled", false); + if (options.onPending) { + options.onPending(); + } + }); + }); + }); + + }; + + function sizeDownImage(imageUrl) { + return util.Deferred(function (def) { + var $canvas = $(""); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + var img = new Image(); + img.src = imageUrl; + // Sometimes the DOM updates immediately to call + // naturalWidth/etc, and sometimes it doesn't; using setTimeout + // gives it a chance to catch up + setTimeout(function () { + var width = img.naturalWidth || img.width; + var height = img.naturalHeight || img.height; + width = width * (session.AVATAR_SIZE / height); + height = session.AVATAR_SIZE; + context.drawImage(img, 0, 0, width, height); + def.resolve($canvas[0].toDataURL("image/png")); + }); + }); + } + + function fixupAvatars(container) { + /* All
      elements need an element inside, + so we add that element here */ + container.find(".togetherjs-person").each(function () { + var $this = $(this); + var inner = $this.find(".togetherjs-person-avatar-swatch"); + if (! inner.length) { + $this.append('
      '); + } + }); + } + + ui.prepareShareLink = function (container) { + container.find("input.togetherjs-share-link").click(function () { + $(this).select(); + }).change(function () { + updateShareLink(); + }); + container.find("a.togetherjs-share-link").click(function () { + // FIXME: this is currently opening up Bluetooth, not sharing a link + if (false && window.MozActivity) { + var activity = new MozActivity({ + name: "share", + data: { + type: "url", + url: $(this).attr("href") + } + }); + } + // FIXME: should show some help if you actually try to follow the link + // like this, instead of simply suppressing it + return false; + }); + updateShareLink(); + }; + + // Menu + + function showMenu(event) { + var el = $("#togetherjs-menu"); + assert(el.length); + el.show(); + bindMenu(); + $(document).bind("click", maybeHideMenu); + } + + function bindMenu() { + var el = $("#togetherjs-menu:visible"); + if (el.length) { + var bound = $("#togetherjs-profile-button"); + var boundOffset = bound.offset(); + el.css({ + top: boundOffset.top + bound.height() - $window.scrollTop() + "px", + left: (boundOffset.left + bound.width() - 10 - el.width() - $window.scrollLeft()) + "px" + }); + } + } + + function bindPicker() { + var picker = $("#togetherjs-pick-color:visible"); + if (picker.length) { + var menu = $("#togetherjs-menu-update-color"); + var menuOffset = menu.offset(); + picker.css({ + top: menuOffset.top + menu.height(), + left: menuOffset.left + }); + } + } + + session.on("resize", function () { + bindMenu(); + bindPicker(); + }); + + function toggleMenu() { + if ($("#togetherjs-menu").is(":visible")) { + hideMenu(); + } else { + showMenu(); + } + } + + function hideMenu() { + var el = $("#togetherjs-menu"); + el.hide(); + $(document).unbind("click", maybeHideMenu); + ui.displayToggle("#togetherjs-self-name-display"); + $("#togetherjs-pick-color").hide(); + } + + function maybeHideMenu(event) { + var t = event.target; + while (t) { + if (t.id == "togetherjs-menu") { + // Click inside the menu, ignore this + return; + } + t = t.parentNode; + } + hideMenu(); + } + + function adjustDockSize(buttons) { + /* Add or remove spots from the dock; positive number to + add button(s), negative number to remove button(s) + */ + assert(typeof buttons == "number"); + assert(buttons && Math.floor(buttons) == buttons); + var iface = $("#togetherjs-dock"); + var newHeight = iface.height() + (BUTTON_HEIGHT * buttons); + // pgbovine - set the lower limit to 1 instead of 3 ... + assert(newHeight >= BUTTON_HEIGHT * 1, "Height went too low (", newHeight, + "), should never be less than 2 buttons high (", BUTTON_HEIGHT * 1, ")"); + //assert(newHeight >= BUTTON_HEIGHT * 3, "Height went too low (", newHeight, + // "), should never be less than 3 buttons high (", BUTTON_HEIGHT * 3, ")"); + iface.css({ + height: newHeight + "px" + }); + } + + // Misc + + function updateShareLink() { + var input = $("input.togetherjs-share-link"); + var link = $("a.togetherjs-share-link"); + var display = $("#togetherjs-session-id"); + if (! session.shareId) { + input.val(""); + link.attr("href", "#"); + display.text("(none)"); + } else { + input.val(session.shareUrl()); + link.attr("href", session.shareUrl()); + display.text(session.shareId); + } + } + + session.on("close", function () { + + if($.browser.mobile) { + // remove bg overlay + //$(".overlay").remove(); + + //after hitting End, reset window draggin + $("body").css({ + "position": "", + top: "", + left: "" + }); + + } + + if (ui.container) { + ui.container.remove(); + ui.container = null; + } + // Clear out any other spurious elements: + $(".togetherjs").remove(); + var starterButton = $("#togetherjs-starter button"); + starterButton.removeClass("togetherjs-running"); + if (starterButton.attr("data-start-text")) { + starterButton.text(starterButton.attr("data-start-text")); + starterButton.attr("data-start-text", ""); + } + if (TogetherJS.startTarget) { + var el = $(TogetherJS.startTarget); + if (el.attr("data-start-togetherjs-html")) { + el.html(el.attr("data-start-togetherjs-html")); + } + el.removeClass("togetherjs-started"); + } + }); + + ui.chat = { + text: function (attrs) { + assert(typeof attrs.text == "string"); + assert(attrs.peer); + assert(attrs.messageId); + var date = attrs.date || Date.now(); + var lastEl = ui.container.find("#togetherjs-chat .togetherjs-chat-message"); + if (lastEl.length) { + lastEl = $(lastEl[lastEl.length-1]); + } + var lastDate = null; + if (lastEl) { + lastDate = parseInt(lastEl.attr("data-date"), 10); + } + if (lastEl && lastEl.attr("data-person") == attrs.peer.id && + lastDate && date < lastDate + COLLAPSE_MESSAGE_LIMIT) { + lastEl.attr("data-date", date); + var content = lastEl.find(".togetherjs-chat-content"); + assert(content.length); + attrs.text = content.text() + "\n" + attrs.text; + attrs.messageId = lastEl.attr("data-message-id"); + lastEl.remove(); + } + var el = templating.sub("chat-message", { + peer: attrs.peer, + content: attrs.text, + date: date + }); + linkify(el.find(".togetherjs-chat-content")); + el.attr("data-person", attrs.peer.id) + .attr("data-date", date) + .attr("data-message-id", attrs.messageId); + ui.chat.add(el, attrs.messageId, attrs.notify); + }, + + joinedSession: function (attrs) { + assert(attrs.peer); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-joined", { + peer: attrs.peer, + date: date + }); + // FIXME: should bind the notification to the dock location + ui.chat.add(el, attrs.peer.className("join-message-"), 4000); + }, + + leftSession: function (attrs) { + assert(attrs.peer); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-left", { + peer: attrs.peer, + date: date, + declinedJoin: attrs.declinedJoin + }); + // FIXME: should bind the notification to the dock location + ui.chat.add(el, attrs.peer.className("join-message-"), 4000); + }, + + system: function (attrs) { + assert(! attrs.peer); + assert(typeof attrs.text == "string"); + var date = attrs.date || Date.now(); + var el = templating.sub("chat-system", { + content: attrs.text, + date: date + }); + ui.chat.add(el, undefined, true); + }, + + clear: deferForContainer(function () { + var container = ui.container.find("#togetherjs-chat-messages"); + container.empty(); + }), + + urlChange: function (attrs) { + assert(attrs.peer); + assert(typeof attrs.url == "string"); + assert(typeof attrs.sameUrl == "boolean"); + var messageId = attrs.peer.className("url-change-"); + // FIXME: duplicating functionality in .add(): + var realId = "togetherjs-chat-" + messageId; + var date = attrs.date || Date.now(); + var title; + // FIXME: strip off common domain from msg.url? E.g., if I'm on + // http://example.com/foobar, and someone goes to http://example.com/baz then + // show only /baz + // FIXME: truncate long titles + if (attrs.title) { + title = attrs.title + " (" + attrs.url + ")"; + } else { + title = attrs.url; + } + var el = templating.sub("url-change", { + peer: attrs.peer, + date: date, + href: attrs.url, + title: title, + sameUrl: attrs.sameUrl + }); + el.find(".togetherjs-nudge").click(function () { + attrs.peer.nudge(); + return false; + }); + el.find(".togetherjs-follow").click(function () { + var url = attrs.peer.url; + if (attrs.peer.urlHash) { + url += attrs.peer.urlHash; + } + location.href = url; + }); + var notify = ! attrs.sameUrl; + if (attrs.sameUrl && ! $("#" + realId).length) { + // Don't bother showing a same-url notification, if no previous notification + // had been shown + return; + } + ui.chat.add(el, messageId, notify); + }, + + invite: function (attrs) { + assert(attrs.peer); + assert(typeof attrs.url == "string"); + var messageId = attrs.peer.className("invite-"); + var date = attrs.date || Date.now(); + var hrefTitle = attrs.url.replace(/\#?&togetherjs=.*/, "").replace(/^\w+:\/\//, ""); + var el = templating.sub("invite", { + peer: attrs.peer, + date: date, + href: attrs.url, + hrefTitle: hrefTitle, + forEveryone: attrs.forEveryone + }); + if (attrs.forEveryone) { + el.find("a").click(function () { + // FIXME: hacky way to do this: + chat.submit("Followed link to " + attrs.url); + }); + } + ui.chat.add(el, messageId, true); + }, + + hideTimeout: null, + + add: deferForContainer(function (el, id, notify) { + if (id) { + el.attr("id", "togetherjs-chat-" + util.safeClassName(id)); + } + var container = ui.container.find("#togetherjs-chat-messages"); + assert(container.length); + var popup = ui.container.find("#togetherjs-chat-notifier"); + container.append(el); + ui.chat.scroll(); + var doNotify = !! notify; + var section = popup.find("#togetherjs-chat-notifier-message"); + if (notify && visibilityApi.hidden()) { + ui.container.find("#togetherjs-notification")[0].play(); + } + if (id && section.data("message-id") == id) { + doNotify = true; + } + if (container.is(":visible")) { + doNotify = false; + } + if (doNotify) { + section.empty(); + section.append(el.clone(true, true)); + if (section.data("message-id") != id) { + section.data("message-id", id || ""); + windowing.show(popup); + } else if (! popup.is(":visible")) { + windowing.show(popup); + } + if (typeof notify == "number") { + // This is the amount of time we're supposed to notify + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout = null; + } + this.hideTimeout = setTimeout((function () { + windowing.hide(popup); + this.hideTimeout = null; + }).bind(this), notify); + } + } + }), + + scroll: deferForContainer(function () { + var container = ui.container.find("#togetherjs-chat-messages")[0]; + container.scrollTop = container.scrollHeight; + }) + + }; + + session.on("display-window", function (id, win) { + if (id == "togetherjs-chat") { + ui.chat.scroll(); + windowing.hide("#togetherjs-chat-notifier"); + } + }); + + /* This class is bound to peers.Peer instances as peer.view. + The .update() method is regularly called by peer objects when info changes. */ + ui.PeerView = util.Class({ + + constructor: function (peer) { + assert(peer.isSelf !== undefined, "PeerView instantiated with non-Peer object"); + this.peer = peer; + this.dockClick = this.dockClick.bind(this); + }, + + /* Takes an element and sets any person-related attributes on the element + Different from updates, which use the class names we set here: */ + setElement: function (el) { + var count = 0; + var classes = ["togetherjs-person", "togetherjs-person-status", + "togetherjs-person-name", "togetherjs-person-name-abbrev", + "togetherjs-person-bgcolor", "togetherjs-person-swatch", + "togetherjs-person-status", "togetherjs-person-role", + "togetherjs-person-url", "togetherjs-person-url-title", + "togetherjs-person-bordercolor"]; + classes.forEach(function (cls) { + var els = el.find("." + cls); + els.addClass(this.peer.className(cls + "-")); + count += els.length; + }, this); + if (! count) { + console.warn("setElement(", el, ") doesn't contain any person items"); + } + this.updateDisplay(el); + }, + + updateDisplay: deferForContainer(function (container) { + container = container || ui.container; + var abbrev = this.peer.name; + if (this.peer.isSelf) { + abbrev = "me"; + } + container.find("." + this.peer.className("togetherjs-person-name-")).text(this.peer.name || ""); + container.find("." + this.peer.className("togetherjs-person-name-abbrev-")).text(abbrev); + var avatarEl = container.find("." + this.peer.className("togetherjs-person-")); + if (this.peer.avatar) { + util.assertValidUrl(this.peer.avatar); + avatarEl.css({ + backgroundImage: "url(" + this.peer.avatar + ")" + }); + } + if (this.peer.idle == "inactive") { + avatarEl.addClass("togetherjs-person-inactive"); + } else { + avatarEl.removeClass("togetherjs-person-inactive"); + } + avatarEl.attr("title", this.peer.name); + if (this.peer.color) { + avatarEl.css({ + borderColor: this.peer.color + }); + avatarEl.find(".togetherjs-person-avatar-swatch").css({ + borderTopColor: this.peer.color, + borderRightColor: this.peer.color + }); + } + if (this.peer.color) { + var colors = container.find("." + this.peer.className("togetherjs-person-bgcolor-")); + colors.css({ + backgroundColor: this.peer.color + }); + colors = container.find("." + this.peer.className("togetherjs-person-bordercolor-")); + colors.css({ + borderColor: this.peer.color + }); + } + container.find("." + this.peer.className("togetherjs-person-role-")) + .text(this.peer.isCreator ? "Creator" : "Participant"); + var urlName = this.peer.title || ""; + if (this.peer.title) { + urlName += " ("; + } + urlName += util.truncateCommonDomain(this.peer.url, location.href); + if (this.peer.title) { + urlName += ")"; + } + container.find("." + this.peer.className("togetherjs-person-url-title-")) + .text(urlName); + var url = this.peer.url; + if (this.peer.urlHash) { + url += this.peer.urlHash; + } + container.find("." + this.peer.className("togetherjs-person-url-")) + .attr("href", url); + // FIXME: should have richer status: + container.find("." + this.peer.className("togetherjs-person-status-")) + .text(this.peer.idle == "active" ? "Active" : "Inactive"); + if (this.peer.isSelf) { + // FIXME: these could also have consistent/reliable class names: + var selfName = $(".togetherjs-self-name"); + selfName.each((function (index, el) { + el = $(el); + if (el.val() != this.peer.name) { + el.val(this.peer.name); + } + }).bind(this)); + $("#togetherjs-menu-avatar").attr("src", this.peer.avatar); + if (! this.peer.name) { + $("#togetherjs-menu .togetherjs-person-name-self").text(this.peer.defaultName); + } + } + if (this.peer.url != session.currentUrl()) { + container.find("." + this.peer.className("togetherjs-person-")) + .addClass("togetherjs-person-other-url"); + } else { + container.find("." + this.peer.className("togetherjs-person-")) + .removeClass("togetherjs-person-other-url"); + } + if (this.peer.following) { + if (this.followCheckbox) { + this.followCheckbox.prop("checked", true); + } + } else { + if (this.followCheckbox) { + this.followCheckbox.prop("checked", false); + } + } + // FIXME: add some style based on following? + updateChatParticipantList(); + this.updateFollow(); + }), + + update: function () { + if (! this.peer.isSelf) { + if (this.peer.status == "live") { + this.dock(); + } else { + this.undock(); + } + } + this.updateDisplay(); + this.updateUrlDisplay(); + }, + + updateUrlDisplay: function (force) { + var url = this.peer.url; + if ((! url) || (url == this._lastUpdateUrlDisplay && ! force)) { + return; + } + this._lastUpdateUrlDisplay = url; + var sameUrl = url == session.currentUrl(); + ui.chat.urlChange({ + peer: this.peer, + url: this.peer.url, + title: this.peer.title, + sameUrl: sameUrl + }); + }, + + urlNudge: function () { + // FIXME: do something more distinct here + this.updateUrlDisplay(true); + }, + + notifyJoined: function () { + ui.chat.joinedSession({ + peer: this.peer + }); + }, + + // when there are too many participants in the dock, consolidate the participants to one avatar, and on mouseOver, the dock expands down to reveal the rest of the participants + // if there are X users in the session + // then hide the users in the dock + // and shrink the size of the dock + // and if you rollover the dock, it expands and reveals the rest of the participants in the dock + + //if users hit X then show the participant button with the consol + + dock: deferForContainer(function () { + + var numberOfUsers = peers.getAllPeers().length; + + // collapse the Dock if too many users + function CollapsedDock() { + // decrease/reset dock height + $("#togetherjs-dock").css("height", 260); + //replace participant button + $("#togetherjs-dock-participants").replaceWith(""); + // new full participant window created on toggle + $("#togetherjs-participantlist-button").click(function () { + windowing.toggle("#togetherjs-participantlist"); + }); + } + + // FIXME: turned off for now + if( numberOfUsers >= 5 && false) { + CollapsedDock(); + } else { + // reset + + } + + + if (this.dockElement) { + return; + } + this.dockElement = templating.sub("dock-person", { + peer: this.peer + }); + this.dockElement.attr("id", this.peer.className("togetherjs-dock-element-")); + ui.container.find("#togetherjs-dock-participants").append(this.dockElement); + this.dockElement.find(".togetherjs-person").animateDockEntry(); + adjustDockSize(1); + this.detailElement = templating.sub("participant-window", { + peer: this.peer + }); + var followId = this.peer.className("togetherjs-person-status-follow-"); + this.detailElement.find('[for="togetherjs-person-status-follow"]').attr("for", followId); + this.detailElement.find('#togetherjs-person-status-follow').attr("id", followId); + this.detailElement.find(".togetherjs-follow").click(function () { + location.href = $(this).attr("href"); + }); + this.detailElement.find(".togetherjs-nudge").click((function () { + this.peer.nudge(); + }).bind(this)); + this.followCheckbox = this.detailElement.find("#" + followId); + this.followCheckbox.change(function () { + if (! this.checked) { + this.peer.unfollow(); + } + // Following doesn't happen until the window is closed + // FIXME: should we tell the user this? + }); + this.maybeHideDetailWindow = this.maybeHideDetailWindow.bind(this); + session.on("hide-window", this.maybeHideDetailWindow); + ui.container.append(this.detailElement); + this.dockElement.click((function () { + if (this.detailElement.is(":visible")) { + windowing.hide(this.detailElement); + } else { + windowing.show(this.detailElement, {bind: this.dockElement}); + this.scrollTo(); + this.cursor().element.animate({ + opacity:0.3 + }).animate({ + opacity:1 + }).animate({ + opacity:0.3 + }).animate({ + opacity:1 + }); + } + }).bind(this)); + this.updateFollow(); + }), + + undock: function () { + if (! this.dockElement) { + return; + } + this.dockElement.animateDockExit().promise().then((function () { + this.dockElement.remove(); + this.dockElement = null; + this.detailElement.remove(); + this.detailElement = null; + adjustDockSize(-1); + }).bind(this)); + }, + + scrollTo: function () { + if (this.peer.url != session.currentUrl()) { + return; + } + var pos = this.peer.scrollPosition; + if (! pos) { + console.warn("Peer has no scroll position:", this.peer); + return; + } + pos = elementFinder.pixelForPosition(pos); + $("html, body").easeTo(pos); + }, + + updateFollow: function () { + if (! this.peer.url) { + return; + } + if (! this.detailElement) { + return; + } + var same = this.detailElement.find(".togetherjs-same-url"); + var different = this.detailElement.find(".togetherjs-different-url"); + if (this.peer.url == session.currentUrl()) { + same.show(); + different.hide(); + } else { + same.hide(); + different.show(); + } + }, + + maybeHideDetailWindow: function (windows) { + if (this.detailElement && windows[0] && windows[0][0] === this.detailElement[0]) { + if (this.followCheckbox[0].checked) { + this.peer.follow(); + } else { + this.peer.unfollow(); + } + } + }, + + dockClick: function () { + // FIXME: scroll to person + }, + + cursor: function () { + return require("cursor").getClient(this.peer.id); + }, + + destroy: function () { + // FIXME: should I get rid of the dockElement? + session.off("hide-window", this.maybeHideDetailWindow); + } + }); + + function updateChatParticipantList() { + var live = peers.getAllPeers(true); + if (live.length) { + ui.displayToggle("#togetherjs-chat-participants"); + $("#togetherjs-chat-participant-list").text( + live.map(function (p) {return p.name;}).join(", ")); + } else { + ui.displayToggle("#togetherjs-chat-no-participants"); + } + } + + function inviteHubUrl() { + var base = TogetherJS.config.get("inviteFromRoom"); + assert(base); + return util.makeUrlAbsolute(base, session.hubUrl()); + } + + var inRefresh = false; + + function refreshInvite() { + if (inRefresh) { + return; + } + inRefresh = true; + require(["who"], function (who) { + var def = who.getList(inviteHubUrl()); + function addUser(user, before) { + var item = templating.sub("invite-user-item", {peer: user}); + item.attr("data-clientid", user.id); + if (before) { + item.insertBefore(before); + } else { + $("#togetherjs-invite-users").append(item); + } + item.click(function() { + invite(user.clientId); + }); + } + function refresh(users, finished) { + var sorted = []; + for (var id in users) { + if (users.hasOwnProperty(id)) { + sorted.push(users[id]); + } + } + sorted.sort(function (a, b) { + return a.name < b.name ? -1 : 1; + }); + var pos = 0; + ui.container.find("#togetherjs-invite-users .togetherjs-menu-item").each(function () { + var $this = $(this); + if (finished && ! users[$this.attr("data-clientid")]) { + $this.remove(); + return; + } + if (pos >= sorted.length) { + return; + } + while (pos < sorted.length && $this.attr("data-clientid") !== sorted[pos].id) { + addUser(sorted[pos], $this); + pos++; + } + while (pos < sorted.length && $this.attr("data-clientid") == sorted[pos].id) { + pos++; + } + }); + for (var i=pos; i TOO_FAR_APART; + } + + session.on("close", unsetListeners); + + function unsetListeners() { + var videos = $('video'); + listeners.forEach(function (event) { + videos.off(event.name, event.listener); + }); + listeners = []; + } + + + session.hub.on('video-timeupdate', function (msg) { + var element = $findElement(msg.location); + var oldTime = element.prop('currentTime'); + var newTime = msg.position; + + //to help throttle uneccesary position changes + if(areTooFarApart(oldTime, newTime)){ + setTime(element, msg.position); + } + }); + + MIRRORED_EVENTS.forEach( function (eventName) { + session.hub.on("video-"+eventName, function (msg) { + var element = $findElement(msg.location); + + setTime(element, msg.position); + + element.trigger(eventName, {silent: true}); + }); + }); + + //Currently does not discriminate between visible and invisible videos + function $findElement(location) { + return $(elementFinder.findElement(location)); + } + + function setTime(video, time) { + video.prop('currentTime', time); + } + +}); diff --git a/v3/js/togetherjs/togetherjs/visibilityApi.js b/v3/js/togetherjs/togetherjs/visibilityApi.js new file mode 100644 index 000000000..6d4b6ce94 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/visibilityApi.js @@ -0,0 +1,46 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* Loading this module will cause, when TogetherJS is active, the + session object to emit visibility-change with a `hidden` argument + whenever the visibility changes, on browsers where we can detect + it. + */ + +define(["util", "session"], function (util, session) { + var visibilityApi = util.Module("visibilityApi"); + var hidden; + var visibilityChange; + if (document.hidden !== undefined) { // Opera 12.10 and Firefox 18 and later support + hidden = "hidden"; + visibilityChange = "visibilitychange"; + } else if (document.mozHidden !== undefined) { + hidden = "mozHidden"; + visibilityChange = "mozvisibilitychange"; + } else if (document.msHidden !== undefined) { + hidden = "msHidden"; + visibilityChange = "msvisibilitychange"; + } else if (document.webkitHidden !== undefined) { + hidden = "webkitHidden"; + visibilityChange = "webkitvisibilitychange"; + } + + session.on("start", function () { + document.addEventListener(visibilityChange, change, false); + }); + + session.on("close", function () { + document.removeEventListener(visibilityChange, change, false); + }); + + function change() { + session.emit("visibility-change", document[hidden]); + } + + visibilityApi.hidden = function () { + return document[hidden]; + }; + + return visibilityApi; +}); diff --git a/v3/js/togetherjs/togetherjs/walkabout.html b/v3/js/togetherjs/togetherjs/walkabout.html new file mode 100644 index 000000000..24c109107 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/walkabout.html @@ -0,0 +1,5 @@ +
      + diff --git a/v3/js/togetherjs/togetherjs/walkthrough.html b/v3/js/togetherjs/togetherjs/walkthrough.html new file mode 100644 index 000000000..a5aeb732e --- /dev/null +++ b/v3/js/togetherjs/togetherjs/walkthrough.html @@ -0,0 +1,90 @@ + +
      +
      {{ gettext( "You're using TOOL_NAME!" ) }}
      + +
      +
      + +
      +

      +

      {{ gettext( "TOOL_NAME is a service for your website that makes it easy to collaborate in real-time on SITE_NAME") }}

      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +

      {{ gettext( "Set up your avatar, name and user color above. If you'd like to update it later, you can click your Profile button.") }}

      +
      +
      +

      +

      {{ gettext( "Change your avatar, name and user color using the Profile button." ) }}

      +
      +
      + +
      +

      +

      +

      {{ gettext( "You can invite more friends to the session by sending the invite link in the TOOL_NAME dock." ) }}

      +

      + + {{ gettext( "Copy and paste this link into IM or email to invite friends." ) }} + + +

      +

      {{ gettext("Send the above link to a friend so they can join your session! You can find this invite link on the TOOL_NAME dock as well.") }}

      +
      + +
      +

      +

      {{ gettext( "Friends who join your TOOL_NAME session will appear here. You can click their avatars to see more." ) }}

      +
      + +
      +

      +

      {{ gettext( "When your friends join you in your TOOL_NAME session, you can chat with them here!" ) }}

      +
      + +
      +

      +

      {{ gettext( "If your browser supports it, click the microphone icon to begin a audio chat. Learn more about this experimental feature here." ) }}

      +
      + +
      +

      +

      {{ gettext( "Alright, you're ready to use TOOL_NAME. Now start collaborating on SITE_NAME!" ) }}

      +
      + +
      + + +
      +
      +
      + +
      + +
      + +
      diff --git a/v3/js/togetherjs/togetherjs/walkthrough.js b/v3/js/togetherjs/togetherjs/walkthrough.js new file mode 100644 index 000000000..9acd32236 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/walkthrough.js @@ -0,0 +1,151 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +define(["util", "ui", "jquery", "windowing", "templates", "templating", "session", "peers"], function (util, ui, $, windowing, templates, templating, session, peers) { + var assert = util.assert; + var walkthrough = util.Module("walkthrough"); + var onHideAll = null; + var container = null; + + var slides = null; + + walkthrough.start = function (firstTime, doneCallback) { + if (! container) { + container = $(templates("walkthrough")); + container.hide(); + ui.container.append(container); + slides = container.find(".togetherjs-walkthrough-slide"); + slides.hide(); + var progress = $("#togetherjs-walkthrough-progress"); + slides.each(function (index) { + var bullet = templating.sub("walkthrough-slide-progress"); + progress.append(bullet); + bullet.click(function () { + show(index); + }); + }); + container.find("#togetherjs-walkthrough-previous").click(previous); + container.find("#togetherjs-walkthrough-next").click(next); + ui.prepareShareLink(container); + container.find(".togetherjs-self-name").bind("keyup", function (event) { + var val = $(event.target).val(); + peers.Self.update({name: val}); + }); + container.find(".togetherjs-swatch").click(function () { + var picker = $("#togetherjs-pick-color"); + if (picker.is(":visible")) { + picker.hide(); + return; + } + picker.show(); + picker.find(".togetherjs-swatch-active").removeClass("togetherjs-swatch-active"); + picker.find(".togetherjs-swatch[data-color=\"" + peers.Self.color + "\"]").addClass("togetherjs-swatch-active"); + var location = container.find(".togetherjs-swatch").offset(); + picker.css({ + top: location.top, + // The -7 comes out of thin air, but puts it in the right place: + left: location.left-7 + }); + }); + if (session.isClient) { + container.find(".togetherjs-if-creator").remove(); + container.find(".togetherjs-ifnot-creator").show(); + } else { + container.find(".togetherjs-if-creator").show(); + container.find(".togetherjs-ifnot-creator").remove(); + } + TogetherJS.config.track("siteName", function (value) { + value = value || document.title; + container.find(".togetherjs-site-name").text(value); + }); + ui.activateAvatarEdit(container, { + onSave: function () { + container.find("#togetherjs-avatar-when-saved").show(); + container.find("#togetherjs-avatar-when-unsaved").hide(); + }, + onPending: function () { + container.find("#togetherjs-avatar-when-saved").hide(); + container.find("#togetherjs-avatar-when-unsaved").show(); + } + }); + // This triggers substititions in the walkthrough: + peers.Self.update({}); + session.emit("new-element", container); + } + assert(typeof firstTime == "boolean", "You must provide a firstTime boolean parameter"); + if (firstTime) { + container.find(".togetherjs-walkthrough-firsttime").show(); + container.find(".togetherjs-walkthrough-not-firsttime").hide(); + } else { + container.find(".togetherjs-walkthrough-firsttime").hide(); + container.find(".togetherjs-walkthrough-not-firsttime").show(); + } + onHideAll = doneCallback; + show(0); + windowing.show(container); + }; + + function show(index) { + slides.hide(); + $(slides[index]).show(); + var bullets = container.find("#togetherjs-walkthrough-progress .togetherjs-walkthrough-slide-progress"); + bullets.removeClass("togetherjs-active"); + $(bullets[index]).addClass("togetherjs-active"); + var $next = $("#togetherjs-walkthrough-next").removeClass("togetherjs-disabled"); + var $previous = $("#togetherjs-walkthrough-previous").removeClass("togetherjs-disabled"); + if (index == slides.length - 1) { + $next.addClass("togetherjs-disabled"); + } else if (index === 0) { + $previous.addClass("togetherjs-disabled"); + } + } + + function previous() { + var index = getIndex(); + index--; + if (index < 0) { + index = 0; + } + show(index); + } + + function next() { + var index = getIndex(); + index++; + if (index >= slides.length) { + index = slides.length-1; + } + show(index); + } + + function getIndex() { + var active = slides.filter(":visible"); + if (! active.length) { + return 0; + } + for (var i=0; i"); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + context.arc(session.AVATAR_SIZE/2, session.AVATAR_SIZE/2, session.AVATAR_SIZE/2, 0, Math.PI*2); + context.closePath(); + context.clip(); + context.drawImage($video[0], (session.AVATAR_SIZE - width) / 2, 0, width, height); + savePicture($canvas[0].toDataURL("image/png")); + } + + $upload.on("change", function () { + var reader = new FileReader(); + reader.onload = function () { + // FIXME: I don't actually know it's JPEG, but it's probably a + // good enough guess: + var url = "data:image/jpeg;base64," + util.blobToBase64(this.result); + convertImage(url, function (result) { + savePicture(result); + }); + }; + reader.onerror = function () { + console.error("Error reading file:", this.error); + }; + reader.readAsArrayBuffer(this.files[0]); + }); + + function convertImage(imageUrl, callback) { + var $canvas = $(""); + $canvas[0].height = session.AVATAR_SIZE; + $canvas[0].width = session.AVATAR_SIZE; + var context = $canvas[0].getContext("2d"); + var img = new Image(); + img.src = imageUrl; + // Sometimes the DOM updates immediately to call + // naturalWidth/etc, and sometimes it doesn't; using setTimeout + // gives it a chance to catch up + setTimeout(function () { + var width = img.naturalWidth || img.width; + var height = img.naturalHeight || img.height; + width = width * (session.AVATAR_SIZE / height); + height = session.AVATAR_SIZE; + context.drawImage(img, 0, 0, width, height); + callback($canvas[0].toDataURL("image/png")); + }); + } + + }); + + /**************************************** + * RTC support + */ + + function audioButton(selector) { + ui.displayToggle(selector); + if (selector == "#togetherjs-audio-incoming") { + $("#togetherjs-audio-button").addClass("togetherjs-animated").addClass("togetherjs-color-alert"); + } else { + $("#togetherjs-audio-button").removeClass("togetherjs-animated").removeClass("togetherjs-color-alert"); + } + } + + session.on("ui-ready", function () { + $("#togetherjs-audio-button").click(function () { + if ($("#togetherjs-rtc-info").is(":visible")) { + windowing.hide(); + return; + } + if (session.RTCSupported) { + enableAudio(); + } else { + windowing.show("#togetherjs-rtc-not-supported"); + } + }); + + if (! session.RTCSupported) { + audioButton("#togetherjs-audio-unavailable"); + return; + } + audioButton("#togetherjs-audio-ready"); + + var audioStream = null; + var accepted = false; + var connected = false; + var $audio = $("#togetherjs-audio-element"); + var offerSent = null; + var offerReceived = null; + var offerDescription = false; + var answerSent = null; + var answerReceived = null; + var answerDescription = false; + var _connection = null; + var iceCandidate = null; + + function enableAudio() { + accepted = true; + storage.settings.get("dontShowRtcInfo").then(function (dontShow) { + if (! dontShow) { + windowing.show("#togetherjs-rtc-info"); + } + }); + if (! audioStream) { + startStreaming(connect); + return; + } + if (! connected) { + connect(); + } + toggleMute(); + } + + ui.container.find("#togetherjs-rtc-info .togetherjs-dont-show-again").change(function () { + storage.settings.set("dontShowRtcInfo", this.checked); + }); + + function error() { + console.warn.apply(console, arguments); + var s = ""; + for (var i=0; i= expected) { + close(); + } else { + def.notify(users); + } + } + } + console.log("users", users); + }; + channel.send({ + type: "who", + "server-echo": true, + clientId: null + }); + var timeout = setTimeout(function () { + close(); + }, MAX_RESPONSE_TIME); + function close() { + if (timeout) { + clearTimeout(timeout); + } + if (lateResponseTimeout) { + clearTimeout(lateResponseTimeout); + } + channel.close(); + def.resolve(users); + } + }); + }; + + who.invite = function (hubUrl, clientId) { + return util.Deferred(function (def) { + var channel = channels.WebSocketChannel(hubUrl); + var id = util.generateId(); + channel.onmessage = function (msg) { + if (msg.type == "invite" && msg.inviteId == id) { + channel.close(); + def.resolve(); + } + }; + var userInfo = session.makeHelloMessage(false); + delete userInfo.type; + userInfo.clientId = session.clientId; + channel.send({ + type: "invite", + inviteId: id, + url: session.shareUrl(), + userInfo: userInfo, + forClientId: clientId, + clientId: null, + "server-echo": true + }); + }); + }; + + who.ExternalPeer = util.Class({ + isSelf: false, + isExternal: true, + constructor: function (id, attrs) { + attrs = attrs || {}; + assert(id); + this.id = id; + this.identityId = attrs.identityId || null; + this.status = attrs.status || "live"; + this.idle = attrs.status || "active"; + this.name = attrs.name || null; + this.avatar = attrs.avatar || null; + this.color = attrs.color || "#00FF00"; + this.lastMessageDate = 0; + this.view = ui.PeerView(this); + }, + + className: function (prefix) { + prefix = prefix || ""; + return prefix + util.safeClassName(this.id); + } + + }); + + return who; +}); diff --git a/v3/js/togetherjs/togetherjs/windowing.js b/v3/js/togetherjs/togetherjs/windowing.js new file mode 100644 index 000000000..ee02fc537 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/windowing.js @@ -0,0 +1,216 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +define(["jquery", "util", "peers", "session"], function ($, util, peers, session) { + var assert = util.assert; + var windowing = util.Module("windowing"); + var $window = $(window); + // This is also in togetherjs.less, under .togetherjs-animated + var ANIMATION_DURATION = 1000; + + /* Displays one window. A window must already exist. This hides other windows, and + positions the window according to its data-bound-to attributes */ + windowing.show = function (element, options) { + element = $(element); + options = options || {}; + options.bind = options.bind || element.attr("data-bind-to"); + var notification = element.hasClass("togetherjs-notification"); + var modal = element.hasClass("togetherjs-modal"); + if (options.bind) { + options.bind = $(options.bind); + } + windowing.hide(); + element.stop(); + element.show(); + // In addition to being hidden, the window can be faded out, which we want to undo: + element.css({opacity: "1"}); + if (options.bind) { + assert(! modal, "Binding does not currently work with modals"); + bind(element, options.bind); + } + if (notification) { + element.slideIn(); + } else if (! modal) { + element.popinWindow(); + } + if (modal) { + getModalBackground().show(); + modalEscape.bind(); + } + onClose = options.onClose || null; + session.emit("display-window", element.attr("id"), element); + }; + + var onClose = null; + + /* Moves a window to be attached to data-bind-to, e.g., the button + that opened the window. Or you can provide an element that it should bind to. */ + function bind(win, bound) { + if ($.browser.mobile) { + return; + } + win = $(win); + assert(bound.length, "Cannot find binding:", bound.selector, "from:", win.selector); + // FIXME: hardcoding + var ifacePos = "right"; + //var ifacePos = panelPosition(); + var boundPos = bound.offset(); + boundPos.height = bound.height(); + boundPos.width = bound.width(); + var windowHeight = $window.height(); + boundPos.top -= $window.scrollTop(); + boundPos.left -= $window.scrollLeft(); + // FIXME: I appear to have to add the padding to the width to get a "true" + // width. But it's still not entirely consistent. + var height = win.height() + 5; + var width = win.width() + 20; + var left, top; + if (ifacePos == "right") { + left = boundPos.left - 11 - width; + top = boundPos.top + (boundPos.height / 2) - (height / 2); + } else if (ifacePos == "left") { + left = boundPos.left + boundPos.width + 15; + top = boundPos.top + (boundPos.height / 2) - (height / 2); + } else if (ifacePos == "bottom") { + left = (boundPos.left + boundPos.width / 2) - (width / 2); + top = boundPos.top - 10 - height; + } + top = Math.min(windowHeight - 10 - height, Math.max(10, top)); + win.css({ + top: top + "px", + left: left + "px" + }); + if (win.hasClass("togetherjs-window")) { + $("#togetherjs-window-pointer-right, #togetherjs-window-pointer-left").hide(); + var pointer = $("#togetherjs-window-pointer-" + ifacePos); + pointer.show(); + if (ifacePos == "right") { + pointer.css({ + top: boundPos.top + Math.floor(boundPos.height / 2) + "px", + left: left + win.width() + 9 + "px" + }); + } else if (ifacePos == "left") { + pointer.css({ + top: boundPos.top + Math.floor(boundPos.height / 2) + "px", + left: (left - 5) + "px" + }); + } else { + console.warn("don't know how to deal with position:", ifacePos); + } + } + win.data("boundTo", bound.selector || "#" + bound.attr("id")); + bound.addClass("togetherjs-active"); + } + + session.on("resize", function () { + var win = $(".togetherjs-modal:visible, .togetherjs-window:visible"); + if (! win.length) { + return; + } + var boundTo = win.data("boundTo"); + if (! boundTo) { + return; + } + boundTo = $(boundTo); + bind(win, boundTo); + }); + + windowing.hide = function (els) { + // FIXME: also hide modals? + els = els || ".togetherjs-window, .togetherjs-modal, .togetherjs-notification"; + els = $(els); + els = els.filter(":visible"); + els.filter(":not(.togetherjs-notification)").hide(); + getModalBackground().hide(); + var windows = []; + els.each(function (index, element) { + element = $(element); + windows.push(element); + var bound = element.data("boundTo"); + if (! bound) { + return; + } + bound = $(bound); + bound.addClass("togetherjs-animated").addClass("togetherjs-color-pulse"); + setTimeout(function () { + bound.removeClass("togetherjs-color-pulse").removeClass("togetherjs-animated"); + }, ANIMATION_DURATION+10); + element.data("boundTo", null); + bound.removeClass("togetherjs-active"); + if (element.hasClass("togetherjs-notification")) { + element.fadeOut().promise().then(function () { + this.hide(); + }); + } + }); + $("#togetherjs-window-pointer-right, #togetherjs-window-pointer-left").hide(); + if (onClose) { + onClose(); + onClose = null; + } + if (windows.length) { + session.emit("hide-window", windows); + } + }; + + windowing.showNotification = function (element, options) { + element = $(element); + options = options || {}; + assert(false); + }; + + windowing.toggle = function (el) { + el = $(el); + if (el.is(":visible")) { + windowing.hide(el); + } else { + windowing.show(el); + } + }; + + function bindEvents(el) { + el.find(".togetherjs-close, .togetherjs-dismiss").click(function (event) { + var w = $(event.target).closest(".togetherjs-window, .togetherjs-modal, .togetherjs-notification"); + windowing.hide(w); + event.stopPropagation(); + return false; + }); + } + + function getModalBackground() { + if (getModalBackground.element) { + return getModalBackground.element; + } + var background = $("#togetherjs-modal-background"); + assert(background.length); + getModalBackground.element = background; + background.click(function () { + windowing.hide(); + }); + return background; + } + + var modalEscape = { + bind: function () { + $(document).keydown(modalEscape.onKeydown); + }, + unbind: function () { + $(document).unbind("keydown", modalEscape.onKeydown); + }, + onKeydown: function (event) { + if (event.which == 27) { + windowing.hide(); + } + } + }; + + session.on("close", function () { + modalEscape.unbind(); + }); + + session.on("new-element", function (el) { + bindEvents(el); + }); + + return windowing; +}); diff --git a/v3/js/togetherjs/togetherjs/youtubeVideos.js b/v3/js/togetherjs/togetherjs/youtubeVideos.js new file mode 100644 index 000000000..04a84ce21 --- /dev/null +++ b/v3/js/togetherjs/togetherjs/youtubeVideos.js @@ -0,0 +1,277 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http:// mozilla.org/MPL/2.0/. */ + +define(["jquery", "util", "session", "elementFinder"], +function ($, util, session, elementFinder) { + + // constant var to indicate whether two players are too far apart in sync + var TOO_FAR_APART = 3000; + // embedded youtube iframes + var youTubeIframes = []; + // youtube API load delay + var API_LOADING_DELAY = 2000; + + session.on("reinitialize", function () { + if (TogetherJS.config.get("youtube")) { + prepareYouTube(); + } + }); + + session.on("close", function () { + $(youTubeIframes).each(function (i, iframe) { + // detach players from iframes + $(iframe).removeData("togetherjs-player"); + $(iframe).removeData("dontPublish"); + $(iframe).removeData("currentVideoId"); + // disable iframeAPI + $(iframe).removeAttr("enablejsapi"); + // remove unique youtube iframe indicators + var id = $(iframe).attr("id") || ""; + if (id.indexOf("youtube-player") === 0) { + // An id we added + $(iframe).removeAttr("id"); + } + youTubeIframes = []; + }); + }); + + TogetherJS.config.track("youtube", function (track, previous) { + if (track && ! previous) { + prepareYouTube(); + // You can enable youtube dynamically, but can't turn it off: + TogetherJS.config.close("youtube"); + } + }); + + function prepareYouTube() { + // setup iframes first + setupYouTubeIframes(); + + // this function should be global so it can be called when API is loaded + window.onYouTubeIframeAPIReady = function() { + // YouTube API is ready + $(youTubeIframes).each(function (i, iframe) { + var player = new YT.Player(iframe.id, { // get the reference to the already existing iframe + events: { + 'onReady': insertPlayer, + 'onStateChange': publishPlayerStateChange + } + }); + }); + }; + + if (window.YT === undefined) { + // load necessary API + // it calls onYouTubeIframeAPIReady automatically when the API finishes loading + var tag = document.createElement('script'); + tag.src = "https://www.youtube.com/iframe_api"; + var firstScriptTag = document.getElementsByTagName('script')[0]; + firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + } else { + // manually invoke APIReady function when the API was already loaded by user + onYouTubeIframeAPIReady(); + } + + // give each youtube iframe a unique id and set its enablejsapi param to true + function setupYouTubeIframes() { + var iframes = $('iframe'); + iframes.each(function (i, iframe) { + // if the iframe's unique id is already set, skip it + // FIXME: what if the user manually sets an iframe's id (i.e. "#my-youtube")? + // maybe we should set iframes everytime togetherjs is reinitialized? + if (($(iframe).attr("src") || "").indexOf("youtube") != -1 && !$(iframe).attr("id")) { + $(iframe).attr("id", "youtube-player"+i); + $(iframe).attr("enablejsapi", 1); + youTubeIframes[i] = iframe; + } + }); + } // iframes are ready + + function insertPlayer(event) { + // only when it is READY, attach a player to its iframe + var currentPlayer = event.target; + var currentIframe = currentPlayer.a; + // check if a player is already attached in case of being reinitialized + if (!$(currentIframe).data("togetherjs-player")) { + $(currentIframe).data("togetherjs-player", currentPlayer); + // initialize its dontPublish flag as well + $(currentIframe).data("dontPublish", false); + // store its current video's id + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + $(currentIframe).data("currentVideoId", currentVideoId); + } + } + } // end of prepareYouTube + + function publishPlayerStateChange(event) { + var target = event.target; + var currentIframe = target.a; + // FIXME: player object retrieved from event.target has an incomplete set of essential functions + // this is most likely due to a recently-introduced problem with current YouTube API as others have been reporting the same issue (12/18/`13) + //var currentPlayer = target; + //var currentTime = currentPlayer.getCurrentTime(); + var currentPlayer = $(currentIframe).data("togetherjs-player"); + var currentTime = target.k.currentTime; + var iframeLocation = elementFinder.elementLocation(currentIframe); + + if ($(currentPlayer).data("seek")) { + $(currentPlayer).removeData("seek"); + return; + } + + // do not publish if playerState was changed by other users + if ($(currentIframe).data("dontPublish")) { + // make it false again so it can start publishing events of its own state changes + $(currentIframe).data("dontPublish", false); + return; + } + + // notify other people that I changed the player state + if (event.data == YT.PlayerState.PLAYING) { + + var currentVideoId = isDifferentVideoLoaded(currentIframe); + if (currentVideoId) { + // notify that I just loaded another video + publishDifferentVideoLoaded(iframeLocation, currentVideoId); + // update current video id + $(currentIframe).data("currentVideoId", currentVideoId); + } else { + session.send({ + type: "playerStateChange", + element: iframeLocation, + playerState: 1, + playerTime: currentTime + }); + } + } else if (event.data == YT.PlayerState.PAUSED) { + session.send({ + type: "playerStateChange", + element: iframeLocation, + playerState: 2, + playerTime: currentTime + }); + } else { + // do nothing when the state is buffering, cued, or ended + return; + } + } + + function publishDifferentVideoLoaded(iframeLocation, videoId) { + session.send({ + type: "differentVideoLoaded", + videoId: videoId, + element: iframeLocation + }); + } + + session.hub.on('playerStateChange', function (msg) { + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + var currentTime = player.getCurrentTime(); + var currentState = player.getPlayerState(); + + if (currentState != msg.playerState) { + $(iframe).data("dontPublish", true); + } + + if (msg.playerState == 1) { + player.playVideo(); + // seekTo() updates the video's time and plays it if it was already playing + // and pauses it if it was already paused + if (areTooFarApart(currentTime, msg.playerTime)) { + player.seekTo(msg.playerTime, true); + } + } else if (msg.playerState == 2) { + // When YouTube videos are advanced while playing, + // Chrome: pause -> pause -> play (onStateChange is called even when it is from pause to pause) + // FireFox: buffering -> play -> buffering -> play + // We must prevent advanced videos from going out of sync + player.pauseVideo(); + if (areTooFarApart(currentTime, msg.playerTime)) { + // "seek" flag will help supress publishing unwanted state changes + $(player).data("seek", true); + player.seekTo(msg.playerTime, true); + } + } + }); + + // if a late user joins a channel, synchronize his videos + session.hub.on('hello', function () { + // wait a couple seconds to make sure the late user has finished loading API + setTimeout(synchronizeVideosOfLateGuest, API_LOADING_DELAY); + }); + + session.hub.on('synchronizeVideosOfLateGuest', function (msg) { + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + // check if another video had been loaded to an existing iframe before I joined + var currentVideoId = $(iframe).data("currentVideoId"); + if (msg.videoId != currentVideoId) { + $(iframe).data("currentVideoId", msg.videoId); + player.loadVideoById(msg.videoId, msg.playerTime, 'default'); + } else { + // if the video is only cued, I do not have to do anything to sync + if (msg.playerState != 5) { + player.seekTo(msg.playerTime, true); + } + } + }); + + session.hub.on('differentVideoLoaded', function (msg) { + // load a new video if the host has loaded one + var iframe = elementFinder.findElement(msg.element); + var player = $(iframe).data("togetherjs-player"); + player.loadVideoById(msg.videoId, 0, 'default'); + $(iframe).data("currentVideoId", msg.videoId); + + }); + + function synchronizeVideosOfLateGuest() { + youTubeIframes.forEach(function (iframe) { + var currentPlayer = $(iframe).data("togetherjs-player"); + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + var currentState = currentPlayer.getPlayerState(); + var currentTime = currentPlayer.getCurrentTime(); + var iframeLocation = elementFinder.elementLocation(iframe); + session.send({ + type: "synchronizeVideosOfLateGuest", + element: iframeLocation, + videoId: currentVideoId, + playerState: currentState, //this might be necessary later + playerTime: currentTime + }); + }); + } + + function isDifferentVideoLoaded(iframe) { + var lastVideoId = $(iframe).data("currentVideoId"); + var currentPlayer = $(iframe).data("togetherjs-player"); + var currentVideoId = getVideoIdFromUrl(currentPlayer.getVideoUrl()); + + // since url forms of iframe src and player's video url are different, + // I have to compare the video ids + if (currentVideoId != lastVideoId) { + return currentVideoId; + } else { + return false; + } + } + + // parses videoId from the url returned by getVideoUrl function + function getVideoIdFromUrl(videoUrl) { + var videoId = videoUrl.split('v=')[1]; + //Chrome and Firefox have different positions for parameters + var ampersandIndex = videoId.indexOf('&'); + if (ampersandIndex != -1) { + videoId = videoId.substring(0, ampersandIndex); + } + return videoId; + } + + function areTooFarApart(myTime, theirTime) { + var secDiff = Math.abs(myTime - theirTime); + var milliDiff = secDiff * 1000; + return milliDiff > TOO_FAR_APART; + } +}); diff --git a/v3/lesson.html b/v3/lesson.html new file mode 100644 index 000000000..418977396 --- /dev/null +++ b/v3/lesson.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + +
      + +
      +
      + + + + + + diff --git a/v3/lessons/aliasing.txt b/v3/lessons/aliasing.txt new file mode 100644 index 000000000..ba4f8b230 --- /dev/null +++ b/v3/lessons/aliasing.txt @@ -0,0 +1,10 @@ +x = [1, 2, 3, 4, 5] +y = x +z = [1, 2, 3, 4, 5] +x.append(6) +====== +{ + "1": "execution point one", + "2": "execution point two", + "4": "execution point four" +} diff --git a/v3/lessons/dive-into-python-311.txt b/v3/lessons/dive-into-python-311.txt new file mode 100644 index 000000000..53a20d0a1 --- /dev/null +++ b/v3/lessons/dive-into-python-311.txt @@ -0,0 +1,38 @@ +li = ['a', 'b', 'mp', 'z', 'e'] +slice1 = li[1:3] +slice2 = li[1:-1] +slice3 = li[0:3] +li.append("new") +li.insert(2, "new") +li.extend(["two", "elements"]) +li.remove("z") +li.remove("new") +li.remove("new") +li.remove("c") +====== +{ + "title": "Basic List Operations", + + "description": "This lesson was derived from Section 3.2 of Dive Into Python.", + + "1": "First, you define a list of five elements. Note that after you execute this line, the elements retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", + + "2": "You can get a subset of a list, called a \"slice\", by specifying two indices. The return value is a new list containing all the elements of the list, in order, starting with the first slice index (in this case li[1]), up to but not including the second slice index (in this case li[3]).", + + "3": "Slicing works if one or both of the slice indices is negative. If it helps, you can think of it this way: reading the list from left to right, the first slice index specifies the first element you want, and the second slice index specifies the first element you don't want. The return value is everything in between.", + + "4": "Lists are zero-based, so li[0:3] returns the first three elements of the list, starting at li[0], up to but not including li[3].", + + "5": "append adds a single element to the end of the list.", + + "6": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there will now be two separate elements with the value 'new', li[2] and li[6].", + + "7": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements.", + + "8": "remove removes the first occurrence of a value from a list.", + + "9": "remove removes only the first occurrence of a value. In this case, 'new' appears twice in the list, but li.remove(\"new\") will remove only the first occurrence.", + + "11": "If the value is not found in the list, Python raises an exception. This mirrors the behavior of the index method." + +} diff --git a/v3/lessons/for-else.txt b/v3/lessons/for-else.txt new file mode 100644 index 000000000..08502b199 --- /dev/null +++ b/v3/lessons/for-else.txt @@ -0,0 +1,34 @@ +primes = [] +for n in range(2, 10): + x_range = range(2, n) + for x in x_range: + if n % x == 0: + break + else: + # loop fell through without finding a factor + primes.append(n) +====== +{ + "title": "For-Else Construct", + + "description": "Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement. This is exemplified by the following loop, which searches for prime numbers. (Yes, this is the correct code. Look closely: the else clause belongs to the for loop, not the if statement.) [Source: Python.org tutorial]", + + "1": "First initialize a list to hold the prime numbers found between 2 and 9 (inclusive).", + + "4": "Note that this inner for loop has an associated else clause on line 7.", + + "5": "The first iteration of this for loop immediately exits and jumps to the else clause because range(2, 2) is empty.", + + "7": "Test whether n is divisible by x to determine primality ...", + + "11": "Since the loop exits again without running a break statement, the else clause is executed.", + + "16": "4 is divisible by 2, so it's not prime. The inner for loop will exit by running the break statement, so its associated else clause will not be executed.", + + "19": "The program now tests whether 5 is divisible by 2, 3, or 4.", + + "26": "Since 5 is prime, the inner for again exits normally, so its associated else clause will be executed.", + + "59": "When the program terminates, primes contains the list of primes found between 2 and 9 (inclusive)" + +} diff --git a/v3/lessons/varargs.txt b/v3/lessons/varargs.txt new file mode 100644 index 000000000..f2508a89c --- /dev/null +++ b/v3/lessons/varargs.txt @@ -0,0 +1,35 @@ +def f1(a, b, *rest): + pass + +f1(1, 2) +f1(1, 2, 3, 4, 5, 6, 7) + +def f2(a, b, **kwrest): + pass + +f2(1, 2, name='Bob', age=38) + +def f3(a, b, *rest, **kwrest): + pass + +f3(1, 2, 3, 4, name='Bob', age=38) +====== +{ + "title": "Optional Function Arguments", + + "description": "Prepending certain argument names with * and ** allows Python functions to accept an arbitrary number of optional arguments.", + + "1": "f1 is declared with two mandatory arguments (a and b) and an optional *rest argument.", + + "3": "When you call f1 with only the two mandatory arguments, rest is an empty tuple.", + + "7": "When you call f1 with additional arguments, rest is a tuple that holds the contents of everything after the two mandatory arguments.", + + "10": "f2 is declared with two mandatory arguments and an optional **kwrest argument.", + + "12": "When you call f2 with additional keyword arguments (e.g., name='Bob', age=38), kwrest becomes a dict bound to their respective keys and values.", + + "15": "You can combine up to one * and one ** argument in a function definition.", + + "17": "Now any extra regular arguments (here, the numbers 3 and 4) are found in the *rest tuple, and any extra keyword arguments are in the **kwrest dict." +} diff --git a/v3/load_matrix_problem.py b/v3/load_matrix_problem.py new file mode 100644 index 000000000..e0e9731ae --- /dev/null +++ b/v3/load_matrix_problem.py @@ -0,0 +1,35 @@ +#!/usr/bin/python + +import cgi +import json + +form = cgi.FieldStorage() +prob_name = form['problem_name'].value +assert type(prob_name) is str # prevent subclassing shenanigans + +print("Content-type: text/plain; charset=iso-8859-1\n") + +try: + for line in open('coding-the-matrix/python_lab.problem2name'): + p, desc = line.strip().split('%') + if p == prob_name: + break + + fn = 'coding-the-matrix/python-lab/' + prob_name + '.py' + cod = open(fn).read() + print(json.dumps(dict(code=cod, test='', description=desc))) +except: + print(json.dumps(dict(code='', test='', status='error'))) + + +''' +import doctest +p = doctest.DocTestParser() +examples = p.get_examples(cod) +if len(examples): + first_ex = examples[0] + testCod = 'result = ' + first_ex.source + +print("Content-type: text/plain; charset=iso-8859-1\n") +print(json.dumps(dict(code=cod, test=testCod))) +''' diff --git a/v3/logger/gae_logger.py b/v3/logger/gae_logger.py new file mode 100644 index 000000000..77b59c172 --- /dev/null +++ b/v3/logger/gae_logger.py @@ -0,0 +1,22 @@ +# User activity logger to be deployed on Google App Engine datastore + +import datetime +from google.appengine.ext import db + + +class VisualizerRequest(db.Model): + user_script = db.TextProperty(required=True) # LONG string + cumulative_mode = db.BooleanProperty(requred=True) + user_ip_addr = db.StringProperty(required=True) + http_referer = db.StringProperty(required=True) + app_id = db.StringProperty(required=True) + request_timestamp = db.DateTimeProperty(auto_now_add=True) # always set timestamp to NOW! + +x = VisualizerRequest(user_script=db.Text(u'print "hello world"\n', encoding='utf_8'), + cumulative_mode=True + user_ip_addr='18.239.4.100', + http_referer='http://www.google.com/?magic-search', + app_id='pgbovine test') + +x.put() + diff --git a/v3/make_visualizations.py b/v3/make_visualizations.py new file mode 100644 index 000000000..96d66e14f --- /dev/null +++ b/v3/make_visualizations.py @@ -0,0 +1,423 @@ +# 'Make' support for Online Python Tutor +# +# Copyright (C) 2013 Peter Robinson (pjr@itee.uq.edu.au) +# +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +""" +This program is a 'make' program for embedding traces in web pages. + +The process is driven by a .json file (the 'Makefile') + +Assuming the file viz_makefile.json is in the cwd which will typically +be where the web pages and python code to be visualized reside, +and $OPT is the path to the installation of OPT +(including make_visualizations.py) then + +python $OPT/make_visualizations.py viz_makefile.json + +will generate all the .js traces and update the web pages as specified +in viz_makefile.json. + +python $OPT/make_visualizations.py viz_makefile.json eg1.html + +will do the same thing but only for the given page(s). + +Here is an example of the 'Makefile' viz_makefile.json +---------------------------- +{ +"visualizer_url": + "http://path_to_local_visualizer/visualize.html", + + +"default_viz_config": + { + "embeddedMode": true, + "verticalStack": true + }, + +"eg1.html": + [ + # hash to end of line is a comment + "js/t1.js", + { + "python_scripts/t1a.py": {} + "python_scripts/t1b.py": {"embeddedMode": false} + } + ] +"eg2.html": + [ + "js/t2.js", + { + # verticalStack is removed from the params below + "python_scripts/t2.py": {"verticalStack": ""} + } + ] +} +---------------------------- +For each .html file the first argument is the .js file where the traces will go +and the second argument is a dictionary whose keys are the python scripts +to be used to generate the traces. + +If "visualizer_url" is not supplied it defaults to + "http://pythontutor.com/visualize.html" + +If "default_viz_config" is not supplied it defaults to + {'heightChangeCallback': 'redrawAllVisualizerArrows', + 'editCodeBaseURL': viz_url} + +where viz_url is the value associated with the "visualizer_url" key. +Note: for this version heightChangeCallback is hard-wired to be +redrawAllVisualizerArrows. + +The dictionary associated with a python script overrides the +"default_viz_config" dictionary. +In other words, if all visualizations behave the same way then the dictionary +associated with a python script can be set to {} and so will end up being the +(supplied) default. + +""" + +import subprocess +import os +import re +import json +from optparse import OptionParser + +# The OPT program for generating traces +GEN_JSON = "generate_json_trace.py" + +# The command used to generate traces {0} will be the full path to GEN_JSON +# !! WARNING !! python below might need to be modified to point at the +# correct version +COMMAND = "python {0} --create_jsvar={1}Trace {2}" + +# The possible keys for configuring the visualization and their types +# At the moment changing callbacks are not supported - +# 'heightChangeCallback' is hard-wired in +VIZ_CONFIG_TYPES = {#'heightChangeCallback': unicode, + #'updateOutputCallback': unicode, + #'executeCodeWithRawInputFunc': unicode, + 'embeddedMode': bool, + 'startingInstruction': int, + 'verticalStack': bool, + 'jumpToEnd': bool, + 'codeDivWidth': int, + 'codeDivHeight': int, + 'hideOutput' : bool, + 'editCodeBaseURL' : unicode, + 'allowEditAnnotations' : bool, + 'disableHeapNesting' : bool, + 'drawParentPointer' : bool, + 'textualMemoryLabels' : bool, + 'showOnlyOutputs' : bool, + } + +CALLBACK_PATTERN_REPL = [ + (r'"heightChangeCallback"\s*:\s*"([^"]*)"', r'"heightChangeCallback":\1'), + (r'"dateOutputCallback"\s*:\s*"([^"]*)"', r'"OutputCallback":\1'), + (r'"executeCodeWithRawInputFunc"\s*:\s*"([^"]*)"', + r'"executeCodeWithRawInputFunc":\1') + ] + +# visualize.html in OPT home +DEFALUT_VIZ_URL = 'http://pythontutor.com/visualize.html' + +# The global default visualization configuration +# Note: heightChangeCallback is hard-wired to be redrawAllVisualizerArrows +DEFAULT_VIZ_CONFIG = {'heightChangeCallback': 'redrawAllVisualizerArrows'} + + +# The string used to generate js code for ExecutionVisualizer +VIZ_VAR = \ +"""var {0}Visualizer = + new ExecutionVisualizer('{0}Div', {0}Trace, + {1});""" + +# The following is used to inject the dependencies and other info +# into the web pages. If this info is already there then it will be replaced. +# If your file already has this info in but does not have the +# PY_TUTOR_END footer then manually remove this info. +# This information is based on the example from 'http://pythontutor.com' +PY_TUTOR_START = '' +PY_TUTOR_END = '' +PY_TUTOR_DEPEND = PY_TUTOR_START + \ +""" + + + + + + + + + + + + + + + + + + + +""" + PY_TUTOR_END + +# A regular expression used to remove the old info +PY_TUTOR_RE = PY_TUTOR_START + '.*' + PY_TUTOR_END + +# Used to inject a comment along with the dependency information so that +# you can cut and paste into the appropriate place in to the page body +DIV_TEXT = '
      ' + +# The ready function to go at the end ot the generated .js file +DOCUMENT_READY_TEXT = \ +""" +$(document).ready(function() {{ + +{0} + + function redrawAllVisualizerArrows() {{ + {1} + }} +$(window).resize(redrawAllVisualizerArrows); +}}); +""" + +REDRAW_CONNECTORS_TEXT = "if ({0}Visualizer) {0}Visualizer.redrawConnectors();" + +COMMENT_RE = r'#.*$' + +def check_viz_config(parent, config): + """Check that config is a valid visualization configuration""" + isOK = True + if type(config) != dict: + print "In {0}, {1} is not a dictionary".format(parent,config) + return False + for key, value in config.iteritems(): + config_field_type = VIZ_CONFIG_TYPES.get(key) + if config_field_type is None: + print "Unknown visualizer key:", key + isOK = False + elif value != '' and type(value) != config_field_type: + print "The visualizer configure entry {0}:{1} has the wrong type".format(key,value) + isOK = False + return isOK + +def check_html_build(html, html_build_info): + """Check that the build information for this html file is valid.""" + if len(html_build_info) != 2: + print "The build list for {0} should have 2 entries".format(html) + return False + if type(html_build_info[0]) != unicode or \ + not html_build_info[0].endswith('.js'): + print "The first argument of build list for {0} should be a .js file".format(html) + if type(html_build_info[1]) != dict: + print "The html build information must be a dictionary" + return False + + isOK = True + for key, value in html_build_info[1].iteritems(): + if type(key) != unicode or not key.endswith('.py'): + print "The key {0} is not a .py file".format(key) + isOK = False + isOK = check_viz_config(html_build_info[1], value) and isOK + return isOK + + +def check_build_info(build_info): + """Check that the json info is a valid 'Makefile'""" + isOK = True + if type(build_info) != dict: + print "The build information must be a dictionary" + return False + for key, value in build_info.iteritems(): + if key == 'default_viz_config': + isOK = check_viz_config(build_info, value) and isOK + elif key == 'visualizer_url': + if type(value) != unicode: + print 'The visualizer url must be a string' + isOK = False + elif key.endswith('.html'): + isOK = check_html_build(key, value) and isOK + else: + print 'Unknown key:', key + isOK = False + return isOK + +def update_dict(d, defaultd): + """Update d with key,value pairs in defaultd if the key is not in d. + If the value is the empty string then that entry is removed from + the dictionary""" + for key, value in defaultd.iteritems(): + if key not in d: + d[key] = value + elif value == '': + d.pop(key) + +def get_build_info(json_file): + """Return the build information in json_file. + Check if file is valid. + """ + try: + fp = open(json_file, 'rU') + text = fp.read() + fp.close() + text = re.sub(COMMENT_RE, '', text, flags=re.M) + build_info = json.loads(text) + except Exception as e: + print "Error in {0}:\n{1}".format(json_file, str(e)) + return None + if not check_build_info(build_info): + return None + # if necessary add a value for "visualizer_url" + if "visualizer_url" not in build_info: + build_info["visualizer_url"] = DEFALUT_VIZ_URL + # merge DEFAULT_VIZ_CONFIG with the supplied "default_viz_config" + config = DEFAULT_VIZ_CONFIG + config["editCodeBaseURL"] = build_info["visualizer_url"] + config.update(build_info.get("default_viz_config", {})) + build_info["default_viz_config"] = config + # update all the + for key, value in build_info.iteritems(): + if key.endswith('.html'): + for py_key, py_dict in value[1].iteritems(): + update_dict(py_dict, build_info.get("default_viz_config", {})) + return build_info + + +def get_vizname_root(py_file): + """Return the name to be used as the prefix for Trace, Visualizer etc""" + return os.path.basename(py_file).replace('.', '_') + + + +def run_command(gen_trace, py_file): + """ Return the output of generate_json_trace.py on py_file""" + command = COMMAND.format(gen_trace, get_vizname_root(py_file), py_file) + return subprocess.check_output(command,bufsize=1, + close_fds=True, + shell=True) + +def make_viz(build_info, html_files): + """Build the visualizations specified in build_info and html_files""" + abspath = os.path.abspath(__file__) + dname = os.path.dirname(abspath) + prog = os.path.join(dname, GEN_JSON) + # if no html files are supplied 'make' all of them + if not html_files: + html_files = [h for h in build_info if h.endswith('.html')] + + for html in html_files: + if html in build_info: + make_html_viz(prog, html, build_info[html]) + else: + print "{0} is not in the json file".format(html) + +def get_viz_config(conf): + """Get the configuration params for visualization.""" + text = json.dumps(conf) + # The callbacks are strings in conf and need to be turned into + # function relreences by removing the quotes + for patt, repl in CALLBACK_PATTERN_REPL: + text = re.sub(patt, repl, text) + return text + +def make_html_viz(prog, html_file, html_info): + """'Make' the visualizations for html_file""" + + js_out, py_dict = html_info + + # all_traces is a string containing all the js trace datastructures + # for all the supplied .py files for html_file + try: + all_traces = '\n'.join(run_command(prog, py) for py in py_dict) + except Exception as e: + print str(e) + return + + # all_viz is the string containing the js code for creating the + # required instances of ExecutionVisualizer for all the .py files + # the root of the .py file is used as the root names in ExecutionVisualizer + all_viz = '\n'.join(VIZ_VAR.format(get_vizname_root(py), + get_viz_config(pyd)) \ + for py,pyd in py_dict.iteritems()) + + all_redraws = ' \n'.join(REDRAW_CONNECTORS_TEXT.format(get_vizname_root(py)) for py, pyd in py_dict.iteritems() if 'redrawAllVisualizerArrows' in pyd.values()) + + ready_function = DOCUMENT_READY_TEXT.format(all_viz, all_redraws) + + # all_js is the string of all the require js code + all_js = all_traces + '\n' + ready_function + '\n' + + fd = open(js_out, 'w') + fd.write(all_js) + fd.close() + + # Update html_file + try: + fd = open(html_file, 'rU') + html_text = fd.read() + fd.close() + except Exception as e: + print str(e) + return + # strip out the old OPT dependency info + html_text = re.sub(PY_TUTOR_RE, '', html_text, flags=re.M | re.S) + end_head_pos = html_text.find('\n') + if end_head_pos == -1: + print "Could not find '\n' in {0}".format(html_file) + return + + # all_divs is the string of all div entries to embed in the html + # this is added to the header comments for easy cut and pasting + # to the correct location in the document. + all_divs = '\n'.join(DIV_TEXT.format(get_vizname_root(py)) for py in py_dict) + # add the updated dependency info just before + html_text = html_text[:end_head_pos] +\ + PY_TUTOR_DEPEND.format(js_out, all_divs) + \ + html_text[end_head_pos:] + fd = open(html_file, 'w') + fd.write(html_text) + fd.close() + + +def main(args): + build_info = get_build_info(args[0]) + if build_info is None: + print "Make aborted" + else: + make_viz(build_info, args[1:]) + + +if __name__ == '__main__': + usage = "usage: %prog json_file [py_files]" + parser = OptionParser(usage = usage) + options,args = parser.parse_args() + if len(args) == 0: + print "Missing arguments - try python make_visualizations.py -h" + else: + main(args) diff --git a/v3/matrix-demo/python_comprehension-1.py b/v3/matrix-demo/python_comprehension-1.py new file mode 100644 index 000000000..c783e46c6 --- /dev/null +++ b/v3/matrix-demo/python_comprehension-1.py @@ -0,0 +1,12 @@ +# List Comprehension Incrementer +def increments(L): + ''' + Input: + -L: a list of numbers + Output: + - a list where the elements in L were incremented by 1 + Example: + >>> increments([1,4,6]) + [2, 5, 7] + ''' + pass diff --git a/v3/matrix-demo/python_comprehension-1.sol.py b/v3/matrix-demo/python_comprehension-1.sol.py new file mode 100644 index 000000000..33d5691bb --- /dev/null +++ b/v3/matrix-demo/python_comprehension-1.sol.py @@ -0,0 +1 @@ +def increments(L): return [1+i for i in L] diff --git a/v3/matrix-demo/python_comprehension-1.test.py b/v3/matrix-demo/python_comprehension-1.test.py new file mode 100644 index 000000000..7bf78f99c --- /dev/null +++ b/v3/matrix-demo/python_comprehension-1.test.py @@ -0,0 +1,15 @@ +''' +>>> increments([1, 5, 7]) +[2, 6, 8] + +>>> increments([0, 0, 0, 0, 0]) +[1, 1, 1, 1, 1] + +>>> increments([0.5, 1.5, 1.75, 2.5]) +[1.5, 2.5, 2.75, 3.5] + +>>> increments([570, 968, 723, 179, 762, 377, 845, 320, 475, 952, 680, 874, 708, 493, 901, 896, 164, 165, 404, 147, 917, 936, 205, 615, 518, 254, 856, 584, 287, 336, 452, 551, 914, 706, 558, 842, 52, 593, 733, 398, 119, 874, 769, 585, 572, 261, 440, 404, 293, 176, 575, 224, 647, 241, 319, 974, 5, 373, 367, 609, 661, 691, 47, 64, 79, 744, 606, 205, 424, 88, 648, 419, 165, 399, 594, 760, 348, 638, 385, 754, 491, 284, 531, 258, 745, 634, 51, 557, 346, 577, 375, 979, 773, 523, 441, 952, 50, 534, 641, 621, 813, 511, 279, 565, 228, 86, 187, 395, 261, 287, 717, 989, 614, 92, 8, 229, 372, 378, 53, 350, 936, 654, 74, 750, 20, 978, 506, 793, 148, 944, 23, 962, 996, 586, 404, 216, 148, 284, 797, 805, 501, 161, 64, 608, 287, 127, 136, 902, 879, 433, 553, 366, 155, 763, 728, 117, 300, 990, 345, 982, 767, 279, 814, 516, 342, 291, 410, 612, 961, 445, 472, 507, 251, 832, 737, 62, 384, 273, 352, 752, 455, 216, 731, 7, 868, 111, 42, 190, 841, 283, 215, 860, 628, 835, 145, 97, 337, 57, 791, 443, 271, 925, 666, 452, 601, 571, 218, 901, 479, 75, 912, 708, 33, 575, 252, 753, 857, 150, 625, 852, 921, 178, 832, 126, 929, 16, 427, 533, 119, 256, 937, 107, 740, 607, 801, 827, 667, 776, 95, 940, 66, 982, 930, 825, 878, 512, 961, 701, 657, 584, 204, 348, 564, 505, 303, 562, 399, 415, 784, 588, 2, 729, 478, 396, 314, 130, 493, 947, 724, 540, 608, 431, 107, 497, 68, 791, 521, 583, 359, 221, 713, 683, 945, 274, 568, 666, 517, 241, 401, 437, 958, 572, 561, 929, 342, 149, 971, 762, 249, 538, 277, 761, 489, 728, 372, 131, 366, 702, 73, 382, 58, 223, 423, 642, 628, 6, 158, 946, 710, 232, 211, 747, 215, 579, 396, 521, 597, 966, 401, 749, 546, 310, 786, 691, 333, 817, 162, 961, 674, 132, 235, 481, 410, 477, 311, 932, 352, 64, 771, 837, 609, 654, 535, 530, 346, 294, 441, 532, 824, 422, 912, 99, 894, 246, 99, 111, 806, 360, 652, 753, 489, 735, 996, 8, 742, 793, 341, 498, 790, 402, 542, 892, 573, 78, 994, 676, 225, 675, 904, 196, 156, 819, 959, 501, 554, 381, 525, 608, 401, 937, 875, 373, 803, 258, 530, 901, 175, 656, 533, 91, 304, 497, 321, 906, 893, 995, 238, 51, 419, 70, 673, 479, 852, 864, 143, 224, 911, 207, 41, 603, 824, 764, 257, 653, 521, 28, 673, 333, 536, 748, 92, 98, 951, 655, 278, 437, 167, 253, 849, 343, 554, 313, 333, 556, 919, 636, 21, 841, 854, 550, 993, 291, 324, 224, 48, 927, 784, 387, 276, 652, 860, 100, 386, 153, 988, 805, 419, 75, 365, 920, 957, 23, 592, 280, 814, 800, 154, 776, 169, 635, 379, 919, 742, 145, 784, 201, 711, 209, 36, 317, 718, 84, 974, 768, 518, 884, 374, 447, 160, 295, 29, 23, 421, 384, 104, 123, 40, 945, 765, 32, 243, 696, 603, 129, 650, 957, 659, 863, 582, 165, 681, 33, 738, 917, 410, 803, 821, 636, 162, 662, 231, 75, 799, 591, 258, 722, 131, 805, 600, 704, 995, 793, 502, 624, 656, 43, 597, 353, 867, 116, 568, 26, 16, 251, 78, 764, 799, 287, 575, 190, 718, 619, 377, 465, 267, 688, 772, 359, 451, 459, 139, 71, 821, 312, 334, 988, 929, 797, 830, 26, 3, 90, 450, 715, 174, 910, 258, 229, 325, 517, 37, 260, 950, 20, 881, 156, 231, 114, 670, 287, 631, 982, 855, 841, 72, 561, 368, 289, 829, 428, 815, 207, 844, 68, 143, 707, 259, 669, 362, 943, 550, 133, 367, 900, 233, 109, 504, 803, 985, 333, 318, 680, 952, 408, 268, 890, 101, 423, 261, 641, 500, 389, 885, 76, 682, 811, 941, 142, 552, 401, 429, 973, 287, 472, 630, 383, 569, 630, 135, 823, 49, 507, 433, 550, 660, 403, 88, 879, 697, 571, 790, 896, 252, 172, 911, 485, 30, 657, 821, 412, 204, 801, 763, 329, 199, 315, 940, 515, 29, 22, 66, 221, 63, 678, 368, 545, 560, 301, 292, 987, 673, 573, 399, 148, 326, 418, 687, 85, 167, 774, 657, 754, 168, 113, 412, 353, 234, 923, 720, 691, 319, 711, 1000, 188, 969, 123, 547, 127, 69, 782, 533, 898, 574, 214, 848, 599, 112, 833, 26, 750, 462, 480, 511, 644, 929, 725, 310, 41, 559, 961, 399, 527, 960, 352, 468, 755, 732, 944, 115, 408, 642, 888, 922, 780, 727, 459, 473, 122, 716, 908, 576, 498, 196, 647, 912, 275, 238, 79, 75, 427, 299, 470, 347, 792, 969, 21, 424, 596, 88, 98, 475, 917, 683, 47, 843, 742, 673, 702, 983, 996, 430, 53, 327, 769, 666, 453, 93, 498, 942, 299, 200, 968, 202, 193, 508, 706, 247, 51, 721, 327, 484, 855, 565, 777, 33, 816, 827, 36, 962, 235, 297, 666, 111, 453, 445, 111, 653, 690, 325, 36, 187, 633, 854, 829, 74, 840, 744, 375, 124, 694, 236, 222, 88, 449, 134, 542, 812, 325, 373, 975, 131, 78, 390, 114, 969, 633, 57, 110, 635, 396, 947, 913, 148, 215, 465, 72, 463, 830, 885, 532, 728, 701, 31, 541, 54, 411, 916, 268, 596, 72, 971, 907, 856, 65, 55, 108, 222, 24, 482, 150, 864, 768, 332, 40, 961, 80, 745, 984, 170, 424, 28, 442, 146, 724, 32, 786, 985, 386, 326, 840, 416, 931, 606, 746, 39, 295, 355, 80, 663, 463, 716, 849, 606, 83, 512, 144, 854, 384, 976, 675, 549, 318, 893, 193, 562, 419, 444, 427, 612, 362, 567, 529, 273, 807, 381, 120, 66, 397, 738, 948, 99, 427, 560, 916, 283, 722, 111, 740, 156, 942, 215, 67, 944, 161, 544, 597, 468, 441, 483, 961, 503, 162, 706, 57, 37, 307, 142, 537, 861, 944]) +[571, 969, 724, 180, 763, 378, 846, 321, 476, 953, 681, 875, 709, 494, 902, 897, 165, 166, 405, 148, 918, 937, 206, 616, 519, 255, 857, 585, 288, 337, 453, 552, 915, 707, 559, 843, 53, 594, 734, 399, 120, 875, 770, 586, 573, 262, 441, 405, 294, 177, 576, 225, 648, 242, 320, 975, 6, 374, 368, 610, 662, 692, 48, 65, 80, 745, 607, 206, 425, 89, 649, 420, 166, 400, 595, 761, 349, 639, 386, 755, 492, 285, 532, 259, 746, 635, 52, 558, 347, 578, 376, 980, 774, 524, 442, 953, 51, 535, 642, 622, 814, 512, 280, 566, 229, 87, 188, 396, 262, 288, 718, 990, 615, 93, 9, 230, 373, 379, 54, 351, 937, 655, 75, 751, 21, 979, 507, 794, 149, 945, 24, 963, 997, 587, 405, 217, 149, 285, 798, 806, 502, 162, 65, 609, 288, 128, 137, 903, 880, 434, 554, 367, 156, 764, 729, 118, 301, 991, 346, 983, 768, 280, 815, 517, 343, 292, 411, 613, 962, 446, 473, 508, 252, 833, 738, 63, 385, 274, 353, 753, 456, 217, 732, 8, 869, 112, 43, 191, 842, 284, 216, 861, 629, 836, 146, 98, 338, 58, 792, 444, 272, 926, 667, 453, 602, 572, 219, 902, 480, 76, 913, 709, 34, 576, 253, 754, 858, 151, 626, 853, 922, 179, 833, 127, 930, 17, 428, 534, 120, 257, 938, 108, 741, 608, 802, 828, 668, 777, 96, 941, 67, 983, 931, 826, 879, 513, 962, 702, 658, 585, 205, 349, 565, 506, 304, 563, 400, 416, 785, 589, 3, 730, 479, 397, 315, 131, 494, 948, 725, 541, 609, 432, 108, 498, 69, 792, 522, 584, 360, 222, 714, 684, 946, 275, 569, 667, 518, 242, 402, 438, 959, 573, 562, 930, 343, 150, 972, 763, 250, 539, 278, 762, 490, 729, 373, 132, 367, 703, 74, 383, 59, 224, 424, 643, 629, 7, 159, 947, 711, 233, 212, 748, 216, 580, 397, 522, 598, 967, 402, 750, 547, 311, 787, 692, 334, 818, 163, 962, 675, 133, 236, 482, 411, 478, 312, 933, 353, 65, 772, 838, 610, 655, 536, 531, 347, 295, 442, 533, 825, 423, 913, 100, 895, 247, 100, 112, 807, 361, 653, 754, 490, 736, 997, 9, 743, 794, 342, 499, 791, 403, 543, 893, 574, 79, 995, 677, 226, 676, 905, 197, 157, 820, 960, 502, 555, 382, 526, 609, 402, 938, 876, 374, 804, 259, 531, 902, 176, 657, 534, 92, 305, 498, 322, 907, 894, 996, 239, 52, 420, 71, 674, 480, 853, 865, 144, 225, 912, 208, 42, 604, 825, 765, 258, 654, 522, 29, 674, 334, 537, 749, 93, 99, 952, 656, 279, 438, 168, 254, 850, 344, 555, 314, 334, 557, 920, 637, 22, 842, 855, 551, 994, 292, 325, 225, 49, 928, 785, 388, 277, 653, 861, 101, 387, 154, 989, 806, 420, 76, 366, 921, 958, 24, 593, 281, 815, 801, 155, 777, 170, 636, 380, 920, 743, 146, 785, 202, 712, 210, 37, 318, 719, 85, 975, 769, 519, 885, 375, 448, 161, 296, 30, 24, 422, 385, 105, 124, 41, 946, 766, 33, 244, 697, 604, 130, 651, 958, 660, 864, 583, 166, 682, 34, 739, 918, 411, 804, 822, 637, 163, 663, 232, 76, 800, 592, 259, 723, 132, 806, 601, 705, 996, 794, 503, 625, 657, 44, 598, 354, 868, 117, 569, 27, 17, 252, 79, 765, 800, 288, 576, 191, 719, 620, 378, 466, 268, 689, 773, 360, 452, 460, 140, 72, 822, 313, 335, 989, 930, 798, 831, 27, 4, 91, 451, 716, 175, 911, 259, 230, 326, 518, 38, 261, 951, 21, 882, 157, 232, 115, 671, 288, 632, 983, 856, 842, 73, 562, 369, 290, 830, 429, 816, 208, 845, 69, 144, 708, 260, 670, 363, 944, 551, 134, 368, 901, 234, 110, 505, 804, 986, 334, 319, 681, 953, 409, 269, 891, 102, 424, 262, 642, 501, 390, 886, 77, 683, 812, 942, 143, 553, 402, 430, 974, 288, 473, 631, 384, 570, 631, 136, 824, 50, 508, 434, 551, 661, 404, 89, 880, 698, 572, 791, 897, 253, 173, 912, 486, 31, 658, 822, 413, 205, 802, 764, 330, 200, 316, 941, 516, 30, 23, 67, 222, 64, 679, 369, 546, 561, 302, 293, 988, 674, 574, 400, 149, 327, 419, 688, 86, 168, 775, 658, 755, 169, 114, 413, 354, 235, 924, 721, 692, 320, 712, 1001, 189, 970, 124, 548, 128, 70, 783, 534, 899, 575, 215, 849, 600, 113, 834, 27, 751, 463, 481, 512, 645, 930, 726, 311, 42, 560, 962, 400, 528, 961, 353, 469, 756, 733, 945, 116, 409, 643, 889, 923, 781, 728, 460, 474, 123, 717, 909, 577, 499, 197, 648, 913, 276, 239, 80, 76, 428, 300, 471, 348, 793, 970, 22, 425, 597, 89, 99, 476, 918, 684, 48, 844, 743, 674, 703, 984, 997, 431, 54, 328, 770, 667, 454, 94, 499, 943, 300, 201, 969, 203, 194, 509, 707, 248, 52, 722, 328, 485, 856, 566, 778, 34, 817, 828, 37, 963, 236, 298, 667, 112, 454, 446, 112, 654, 691, 326, 37, 188, 634, 855, 830, 75, 841, 745, 376, 125, 695, 237, 223, 89, 450, 135, 543, 813, 326, 374, 976, 132, 79, 391, 115, 970, 634, 58, 111, 636, 397, 948, 914, 149, 216, 466, 73, 464, 831, 886, 533, 729, 702, 32, 542, 55, 412, 917, 269, 597, 73, 972, 908, 857, 66, 56, 109, 223, 25, 483, 151, 865, 769, 333, 41, 962, 81, 746, 985, 171, 425, 29, 443, 147, 725, 33, 787, 986, 387, 327, 841, 417, 932, 607, 747, 40, 296, 356, 81, 664, 464, 717, 850, 607, 84, 513, 145, 855, 385, 977, 676, 550, 319, 894, 194, 563, 420, 445, 428, 613, 363, 568, 530, 274, 808, 382, 121, 67, 398, 739, 949, 100, 428, 561, 917, 284, 723, 112, 741, 157, 943, 216, 68, 945, 162, 545, 598, 469, 442, 484, 962, 504, 163, 707, 58, 38, 308, 143, 538, 862, 945] + + +''' diff --git a/v3/matrix.html b/v3/matrix.html new file mode 100644 index 000000000..a0d009732 --- /dev/null +++ b/v3/matrix.html @@ -0,0 +1,136 @@ + + + + + + + Coding The Matrix - Python Lab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +

      + +Write your solution code here (will be submitted for grading): +
      +
      + +

      +Write your test code here (will not be submitted for grading): +
      + +

      + +

      + +
      + + +
      +
      + +
      + + +

      + +

      + +

      + +

      +Grader output:
      + +

      + + + +
      + + + + + + diff --git a/v3/matrix.py b/v3/matrix.py new file mode 100644 index 000000000..3edeaaee5 --- /dev/null +++ b/v3/matrix.py @@ -0,0 +1,151 @@ +# m a t r i x . p y +# +# Support for 2d matrix that renders to an HTML table +# +# Chris Meyers. 09/25/2013 +# + +dftTableAttr = 'cellspacing="0" cellpadding="10"' + +class Matrix : + def __init__ (self, nrows=1, ncols=1, data=None, + dftFormat="", dftStyle="", title="", + tableAttr=dftTableAttr, tableHeaders=None, + Expand=True) : + self.nrows = nrows + self.ncols = ncols + self.values = {} + self.expanded = Expand + if Expand : + # get attributes only on the main Matrix + self.dftFormat = dftFormat + self.dftStyle = dftStyle + self.title = title + self.tableAttr = tableAttr + self.tableHeaders = tableHeaders + self.format = Matrix(nrows, ncols, Expand=False) + self.style = Matrix(nrows, ncols, Expand=False) + if data : + if type(data) == type({}) : data=dictToLol(data) + if type(data) == type([]) : + self.populate(data) + + def __getitem__(self, coords) : + row, col = coords + return self.values.get((row,col)) + + def __setitem__(self, coords, value) : + row, col = coords + self.values[(row,col)] = value + self.nrows = max(self.nrows,row+1) + self.ncols = max(self.ncols,col+1) + if self.expanded : + self.format.nrows = self.nrows + self.format.ncols = self.ncols + self.style.nrows = self.nrows + self.style.ncols = self.ncols + return value + +#=========================================== + + def setrowVals(self, row, values) : + "set each column to a seperate value" + col = 0 + for col in range(len(values)) : + self.__setitem__((row,col),values[col]) + col += 1 + + def setrowVal(self, row, value) : + "set all columns to the same value" + col = 0 + while col < self.ncols : + self.__setitem__((row,col),value) + col += 1 + + def getrow (self, row) : + vals = [] + for c in range(self.ncols) : + vals.append(self.__getitem__( (row,c) )) + return vals + +#=========================================== + + def setcolVals(self, col, values) : + "set each row to a seperate value" + row = 0 + for row in range(len(values)) : + self.__setitem__((row,col),values[row]) + row += 1 + + def setcolVal(self, col, value) : + "set all rowumns to the same value" + row = 0 + while row < self.nrows : + self.__setitem__((row,col),value) + row += 1 + + def getcol (self, col) : + vals = [] + for r in range(self.nrows) : + vals.append(self.__getitem__( (r,col) )) + return vals + +#=========================================== + + def populate(self, lists) : + "Fill self from a list of lists" + nRows = len(lists) + nCols = max([len(l) for l in lists]) + for row in range(len(lists)) : + vals = lists[row] + if type(vals) != list : vals = [vals] # make sing col + self.setrowVals(row, vals) + + def renderHtml(self,wrap=None) : + lins = ["","
      " % self.tableAttr] + if self.title : lins[0] = "
      %s
      " % self.title + headers = self.tableHeaders + if headers : + lins.append("") + for row in range(self.nrows) : + rowLin = [" "] + vals = self.getrow(row) + if self.format : formats = self.format.getrow(row) + else : formats = ['']*self.ncols + if self.style : styles = self.style.getrow(row) + else : styles = ['']*self.ncols + for c in range(self.ncols) : + val = vals[c]; style=styles[c]; format=formats[c] + if val == None : val = "" + if not format : format = self.dftFormat + if format : + if type(format)==type("") : val = format % val + else : val = format(val) + if not style : style = self.dftStyle + if style : cell = '' % (style,val) + else : cell = '' % val + if wrap and c>0 and c%wrap==0 : cell=""+cell + rowLin.append(cell) + rowLin.append("") + lins.append("".join(rowLin)) + lins.append("
      "+"".join(map(str,headers))+ + "
      %s%s
      ") + return "\n".join(lins) + + def __str__ (self) : + return "Matrix-%dx%d" % (self.nrows,self.ncols) + +#=========================================== + +typeSeq = (type([]), type((1,2))) + +def dictToLol(dic) : + "Convert dict to a list of lists" + keys = dic.keys(); keys.sort() + lists = [] + for key in keys : + val = dic[key] + if type(val) not in typeSeq : val = [val] + lists.append([key]+list(val)) + return lists + diff --git a/v3/misc/simple-office-mix.html b/v3/misc/simple-office-mix.html new file mode 100644 index 000000000..5a4b6572a --- /dev/null +++ b/v3/misc/simple-office-mix.html @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + +
      +Data: +
      + +
      + + + diff --git a/v3/name_lookup.py b/v3/name_lookup.py new file mode 100644 index 000000000..f58c91a7c --- /dev/null +++ b/v3/name_lookup.py @@ -0,0 +1,28 @@ +#!/usr/local/bin/python2.7 + +# Minimal CGI script for name lookups + +# Also, check CGI execute permission in your script directory. +# You might need to create an .htaccess file like the following: +# +# Options +ExecCGI +# AddHandler cgi-script .py + +import cgi +import json +import sys + +form = cgi.FieldStorage() +requested_email = form['email'].value + +print("Content-type: text/plain; charset=iso-8859-1\n") + +for line in open('names.csv'): + toks = line.strip().split(',') + name = toks[0].strip() + email = toks[1].strip() + if email == requested_email: + print(json.dumps({'name': name, 'email': email})) + sys.exit(0) # get out early + +print(json.dumps({'error': 1})) diff --git a/v3/opt-annotations.png b/v3/opt-annotations.png new file mode 100644 index 000000000..9fff3305d Binary files /dev/null and b/v3/opt-annotations.png differ diff --git a/v3/opt-ipy-server.py b/v3/opt-ipy-server.py new file mode 100755 index 000000000..33dff6e7c --- /dev/null +++ b/v3/opt-ipy-server.py @@ -0,0 +1,105 @@ +# Adapted from https://github.com/facebook/tornado/tree/master/demos/websocket + +import logging +import tornado.ioloop +import tornado.options +import tornado.web +import tornado.websocket +import os.path + +from tornado.options import define, options + +import json + + +define("port", default=8888, help="run on the given port", type=int) + + +class Application(tornado.web.Application): + # singleton + current_full_trace = None + + def __init__(self): + handlers = [ + (r"/js/(.*)", + tornado.web.StaticFileHandler, + {"path": os.path.join(os.path.dirname(__file__), 'js/')}), + (r"/css/(.*)", + tornado.web.StaticFileHandler, + {"path": os.path.join(os.path.dirname(__file__), 'css/')}), + (r"/", MainHandler), + (r"/chatsocket", ChatSocketHandler), + # respond to HTTP POST requests: + (r"/wholetrace", WholeTraceHandler), + (r"/difftrace", DiffTraceHandler), + (r"/clear", ClearHandler), + ] + tornado.web.Application.__init__(self, handlers) + + +class MainHandler(tornado.web.RequestHandler): + def get(self): + self.render("opt-ipy.html") + + +class WholeTraceHandler(tornado.web.RequestHandler): + def post(self): + message = self.request.body + dat = json.loads(message.decode()) + Application.current_full_trace = dat + + js_msg=dict(payload=Application.current_full_trace, type='wholetrace') + ChatSocketHandler.send_updates(json.dumps(js_msg)) + + +class DiffTraceHandler(tornado.web.RequestHandler): + def post(self): + # TODO: implement me using, say, + # https://code.google.com/p/google-diff-match-patch/ + pass + + +class ClearHandler(tornado.web.RequestHandler): + def post(self): + Application.current_full_trace = None + js_msg=dict(type='clear') + ChatSocketHandler.send_updates(json.dumps(js_msg)) + + +class ChatSocketHandler(tornado.websocket.WebSocketHandler): + waiters = set() + + def allow_draft76(self): + # for iOS 5.0 Safari + return True + + def open(self): + ChatSocketHandler.waiters.add(self) + # when a new connection is made, send the entire trace to only + # THIS browser + if Application.current_full_trace: + js_msg=dict(payload=Application.current_full_trace, type='wholetrace') + self.write_message(json.dumps(js_msg)) + + def on_close(self): + ChatSocketHandler.waiters.remove(self) + + @classmethod + def send_updates(cls, chat): + #logging.info("sending message to %d waiters", len(cls.waiters)) + for waiter in cls.waiters: + try: + waiter.write_message(chat) + except: + logging.error("Error sending message", exc_info=True) + + +def main(): + tornado.options.parse_command_line() + app = Application() + app.listen(options.port) + tornado.ioloop.IOLoop.instance().start() + + +if __name__ == "__main__": + main() diff --git a/v3/opt-ipy.html b/v3/opt-ipy.html new file mode 100644 index 000000000..2444fb096 --- /dev/null +++ b/v3/opt-ipy.html @@ -0,0 +1,62 @@ + + + + + Online Python Tutor: interactive mode + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + diff --git a/v3/opt-ipy.py b/v3/opt-ipy.py new file mode 100644 index 000000000..b8d853539 --- /dev/null +++ b/v3/opt-ipy.py @@ -0,0 +1,192 @@ +# Online Python Tutor extension for the IPython shell +# by Philip Guo (philip@pgbovine.net) +# August 2013 + +# When this extension is loaded, you can type code into the IPython +# prompt and visualize its execution in a web browser. +# +# This extension also defines a '%clear' magic command to clear the +# user's global environment and accompanying visualization. + +# One-minute video demo: +# http://www.youtube.com/watch?v=Q3oarDuZPL0 + +# Prerequisites: +# - IPython shell (http://ipython.org/, tested on 0.13.1 and 1.0.dev) +# - tornado Web server (http://www.tornadoweb.org/) +# +# One easy way to set up these prerequisites is by installing the +# free Enthought Python Distribution: +# https://www.enthought.com/products/epd/free/ + +# Instructions: +# +# 1. Start a local web server +# +# python opt-ipy-server.py +# +# 2. Load this URL in your browser: +# +# http://localhost:8888/ +# +# 3. Start the IPython shell in this directory by running: +# +# ipython +# +# 4. Load this extension by running: +# +# %load_ext opt-ipy +# +# At this point, as soon as you execute a Python statement in the +# IPython shell, it should immediately be visualized in your browser. + + +# If you're hosting the server remotely, then change this address: +SERVER_ADDR = "http://localhost:8888/" + +assert SERVER_ADDR[-1] == '/' + + +import sys, json +import pg_logger + +# TODO: use the 'six' library to smooth out py2 and py3 differences +is_python3 = (sys.version_info[0] == 3) + + +viewitems = None +urlopen = None +if is_python3: + import urllib + urlopen = urllib.request.urlopen + viewitems = lambda x: x.items() + +else: + import urllib2 + urlopen = urllib2.urlopen + viewitems = lambda x: x.iteritems() + + + +# Standardize display of floats to 3 significant figures +# +# Trick from: +# http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module +json.encoder.FLOAT_REPR = lambda f: ('%.3f' % f) + +#INDENT_LEVEL = 2 # human-readable +INDENT_LEVEL = None # compact + +# TODO: support incremental pushes to the OPT frontend for efficiency +# and better "snappiness" +# +# I think the easiest way to do diffs is to set INDENT_LEVEL = 2 above +# and then simply send the diff of the JSON string to the server. +# It's WAY TOO COMPLICATED to try implementing semantic diffs of the +# OPT trace ourselves, since there are too many corner cases. +# +# text diffs are an elegant solution :) +# +# https://code.google.com/p/google-diff-match-patch/ + + +class OptHistory(object): + def __init__(self): + self.executed_stmts = [] + + def pop_last(self): + self.executed_stmts.pop() + + def get_code(self): + return '\n'.join(self.executed_stmts) + + def run_str_and_broadcast(self, stmt_str): + ''' + Run stmt_str and transmit trace to server + ''' + self.executed_stmts.append(stmt_str) + + opt_trace = pg_logger.exec_script_str_local(self.get_code(), [], False, False, + lambda cod, trace: trace) + + last_evt = opt_trace[-1]['event'] + if last_evt == 'exception': + epic_fail = True + else: + assert last_evt == 'return' + epic_fail = False + + trace_dict = dict(code=self.get_code(), trace=opt_trace) + json_output = json.dumps(trace_dict, indent=INDENT_LEVEL) + + # if this statement ended in an exception, delete it from the + # history and pretend it never happened + if epic_fail: + self.pop_last() + + urlopen(SERVER_ADDR + 'wholetrace', json_output.encode()) + + +# called right before a statement gets executed +def opt_pre_run_code_hook(self): + # when you run multiple statements on one line using a semicolon: + # e.g., "print x; print y", this function will fire multiple times. + # we want to avoid duplicates! + last_cmd = self.history_manager.input_hist_parsed[-1] + last_cmd_index = len(self.history_manager.input_hist_parsed) - 1 + + # also don't intercept special ipython commands + if 'get_ipython().' in last_cmd: + return + + if self.meta.last_cmd_index == last_cmd_index: + assert self.meta.last_cmd == last_cmd + return # punt!!! + + self.meta.last_cmd = last_cmd + self.meta.last_cmd_index = last_cmd_index + + self.meta.opt_history.run_str_and_broadcast(last_cmd) + + +# clear global namespace and reset history +def opt_clear(self, params): + ip = get_ipython() + + filtered_user_ns = set() + for k, v in viewitems(ip.user_ns): + if k[0] == '_': + continue + if k in ('In', 'Out', 'help', 'quit', 'exit', 'get_ipython'): + continue + filtered_user_ns.add(k) + + for k in filtered_user_ns: + del ip.user_ns[k] + + ip.meta.opt_history = OptHistory() # just create a new one! + + urlopen(SERVER_ADDR + 'clear', 'blub'.encode()) # need a non-empty POST body + + +def load_ipython_extension(ipython): + # The `ipython` argument is the currently active `InteractiveShell` + # instance, which can be used in any way. This allows you to register + # new magics or aliases, for example. + + ipython.meta.opt_history = OptHistory() + + ipython.meta.last_cmd = None + ipython.meta.last_cmd_index = -1 # set to an impossible initial value + + # NB: spelling might be different in older IPython versions + ipython.set_hook('pre_run_code_hook', opt_pre_run_code_hook) + ipython.define_magic('clear', opt_clear) + + print("Online Python Tutor extension loaded!") + + +def unload_ipython_extension(ipython): + # If you want your extension to be unloadable, put that logic here. + pass + diff --git a/v3/opt-logo-32x32.png b/v3/opt-logo-32x32.png new file mode 100644 index 000000000..243f39a43 Binary files /dev/null and b/v3/opt-logo-32x32.png differ diff --git a/v3/opt-logo-96x96.png b/v3/opt-logo-96x96.png new file mode 100644 index 000000000..ffb1d77f2 Binary files /dev/null and b/v3/opt-logo-96x96.png differ diff --git a/v3/opt-office-mix.html b/v3/opt-office-mix.html new file mode 100644 index 000000000..409b687f1 --- /dev/null +++ b/v3/opt-office-mix.html @@ -0,0 +1,138 @@ + + + + + + + Online Python Tutor - Visualize program execution + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      Write + + + +code here:
      +
      +
      + + + +
      + +
      +
      + + + + + diff --git a/v3/opt-v3-cs61a-embed-small.png b/v3/opt-v3-cs61a-embed-small.png new file mode 100644 index 000000000..b60f3b042 Binary files /dev/null and b/v3/opt-v3-cs61a-embed-small.png differ diff --git a/v3/opt-v3-cs61a-embed.png b/v3/opt-v3-cs61a-embed.png new file mode 100644 index 000000000..c0ffcbd54 Binary files /dev/null and b/v3/opt-v3-cs61a-embed.png differ diff --git a/v3/opt_togetherjs/README.txt b/v3/opt_togetherjs/README.txt new file mode 100644 index 000000000..df959f392 --- /dev/null +++ b/v3/opt_togetherjs/README.txt @@ -0,0 +1,6 @@ +server.js is forked from TogetherJS togetherjs/hub/server.js and +augmented with extra logging and an admin interface + +To run both locally and online, use: + +node server.js --host 0.0.0.0 --port 30035 diff --git a/v3/opt_togetherjs/admin.html b/v3/opt_togetherjs/admin.html new file mode 100644 index 000000000..31785725b --- /dev/null +++ b/v3/opt_togetherjs/admin.html @@ -0,0 +1,132 @@ + + + + + OPT live help admin panel + + + + + + + + +

      OPT live help admin panel

      + +
      +? learners currently online, +loaded on ? +
      + + + + +
      + + + diff --git a/v3/opt_togetherjs/server.js b/v3/opt_togetherjs/server.js new file mode 100644 index 000000000..e4e6ae7c4 --- /dev/null +++ b/v3/opt_togetherjs/server.js @@ -0,0 +1,687 @@ +// 2014-05-08 Philip Guo forked this code from TogetherJS +// togetherjs/hub/server.js and started making modifications marked by +// 'pgbovine' in comments + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// New Relic Server monitoring support +if ( process.env.NEW_RELIC_HOME ) { + require("newrelic"); +} + +var SAMPLE_STATS_INTERVAL = 60*1000; // 1 minute +var SAMPLE_LOAD_INTERVAL = 5*60*1000; // 5 minutes +var EMPTY_ROOM_LOG_TIMEOUT = 3*60*1000; // 3 minutes + +var WebSocketServer = require('websocket').server; +var WebSocketRouter = require('websocket').router; +var http = require('http'); +var parseUrl = require('url').parse; +var fs = require('fs'); + +// FIXME: not sure what logger to use +//var logger = require('../../lib/logger'); + +// LOG_LEVEL values: +// 0: show everything (including debug) +// 1: don't show debug, do show logger.log +// 2: don't show logger.log and debug, do show logger.info (and STATS) +// 3: don't show info, do show warn +// 4: don't show warn, do show error +// 5: don't show anything +// Stats are at level 2 + +var thisSource = "// What follows is the source for the server.\n" + + "// Obviously we can't prove this is the actual source, but if it isn't then we're \n" + + "// a bunch of lying liars, so at least you have us on record.\n\n" + + fs.readFileSync(__filename); + +var Logger = function (level, filename, stdout) { + this.level = level; + this.filename = filename; + this.stdout = !!stdout; + this._open(); + process.on("SIGUSR2", (function () { + this._open(); + }).bind(this)); +}; + +Logger.prototype = { + + write: function () { + if (this.stdout) { + console.log.apply(console, arguments); + } + if (this.file) { + var s = []; + for (var i=0; i EMPTY_ROOM_LOG_TIMEOUT) { + logStats(id, connectionStats[id]); + delete connectionStats[id]; + continue; + } + var totalClients = countClients(connectionStats[id].clients); + var connections = 0; + if (allConnections[id]) { + connections = allConnections[id].length; + } + connectionStats[id].sample.push({ + time: Date.now(), + totalClients: totalClients, + connections: connections + }); + } +}, SAMPLE_STATS_INTERVAL); + +setInterval(function () { + var load = getLoad(); + load.time = Date.now(); + logger.info("LOAD", JSON.stringify(load)); +}, SAMPLE_LOAD_INTERVAL); + +function getLoad() { + var sessions = 0; + var connections = 0; + var empty = 0; + var solo = 0; + for (var id in allConnections) { + if (allConnections[id].length) { + sessions++; + connections += allConnections[id].length; + if (allConnections[id].length == 1) { + solo++; + } + } else { + empty++; + } + } + return { + sessions: sessions, + connections: connections, + empty: empty, + solo: solo + }; +} + +function countClients(clients) { + var n = 0; + for (var clientId in clients) { + n++; + } + return n; +} + +function logStats(id, stats) { + logger.info("STATS", JSON.stringify({ + id: id, + created: stats.created, + sample: stats.sample, + totalClients: countClients(stats.clients), + totalMessageChars: stats.totalMessageChars, + totalMessages: stats.totalMessages, + domain: stats.firstDomain || null, + domainCount: countClients(stats.domains), + urls: countClients(stats.urls) + })); +} + +if (require.main == module) { + var ops = require('optimist') + .usage("Usage: $0 [--port 8080] [--host=localhost] [--log=filename] [--log-level=N]") + .describe("port", "The port to server on (default $HUB_SERVER_PORT, $PORT, $VCAP_APP_PORT, or 8080") + .describe("host", "The interface to serve on (default $HUB_SERVER_HOST, $HOST, $VCAP_APP_HOST, 127.0.0.1). Use 0.0.0.0 to make it public") + .describe("log-level", "The level of logging to do, from 0 (very verbose) to 5 (nothing) (default $LOG_LEVEL or 0)") + .describe("log", "A file to log to (default stdout)") + .describe("stdout", "Log to both stdout and the log file"); + var port = ops.argv.port || process.env.HUB_SERVER_PORT || process.env.VCAP_APP_PORT || + process.env.PORT || 8080; + var host = ops.argv.host || process.env.HUB_SERVER_HOST || process.env.VCAP_APP_HOST || + process.env.HOST || '127.0.0.1'; + var logLevel = 5; // pgbovine -- set default to no logging for simplicity + var stdout = ops.argv.stdout || !ops.argv.log; + if (ops.argv['log-level']) { + logLevel = parseInt(ops.argv['log-level'], 10); + } + logger = new Logger(logLevel, ops.argv.log, stdout); + if (ops.argv.h || ops.argv.help) { + console.log(ops.help()); + process.exit(); + } else { + startServer(port, host); + } +} + +exports.startServer = startServer; + + +// pgbovine - logging infrastructure + +function createLogEntry(req, event_type) { + obj = {}; + + // Webfaction forwards IP addresses via proxy, so use this ... + // http://stackoverflow.com/questions/8107856/how-can-i-get-the-users-ip-address-using-node-js + var ip = req.remoteAddress /* check this FIRST since it's for WebSockets */ || + req.headers['x-forwarded-for'] || + req.connection.remoteAddress || + req.socket.remoteAddress || + req.connection.socket.remoteAddress; + + obj['ip'] = ip; + obj['date'] = (new Date()).toISOString(); + obj['type'] = event_type; + + return obj; +} + + +// pgbovine - TogetherJS administrator hub + +var pgLogFile = null; + +var EventEmitter = require('events').EventEmitter; +var learnerEmitter = new EventEmitter(); // sending events to learners +var adminEmitter = new EventEmitter(); // sending events to administrators + +// to prevent warnings when a bunch of learners sign online +learnerEmitter.setMaxListeners(100); +adminEmitter.setMaxListeners(100); + +var helpQueue = []; +var helpAvailable = false; + +var MAX_LOG_SIZE = 10000; +var curLogSize = 0; + +function pgLogWrite(logObj) { + var s = JSON.stringify(logObj); + //console.log(s); // debug + + // rotate log every MAX_LOG_SIZE entries + if (!pgLogFile || curLogSize >= MAX_LOG_SIZE) { + if (pgLogFile) { + pgLogFile.end(); + } + var filename = 'log_' + logObj.date + '.json'; + pgLogFile = fs.createWriteStream(filename, + {flags: 'w', + mode: parseInt('644', 8), + encoding: "UTF-8"}); + curLogSize = 0; + } + + pgLogFile.write(s + '\n'); + curLogSize++; +} + +function toggleHelpAvailable(req, res) { + helpAvailable = !helpAvailable; + res.end(String(helpAvailable)); + + var logObj = createLogEntry(req, 'help-available'); + logObj.helpAvailable = helpAvailable; + + learnerEmitter.emit('help-available-update', logObj); + adminEmitter.emit('help-available-update', logObj); + + pgLogWrite(logObj); +} + + +// all learners on pythontutor.com connect to this SSE feed +function learnerSSE(req, res) { + // set up Server-Sent Event header + res.writeHead(200, { + 'Access-Control-Allow-Origin': '*', // with CORS action + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + 'Connection': 'keep-alive', + }); + + function sendDat() { + var dat = {helpAvailable: helpAvailable, + helpQueueUrls: helpQueue.length}; + constructSSE(res, dat); + }; + + learnerEmitter.on('help-available-update', sendDat); + learnerEmitter.on('help-queue-update', sendDat); + learnerEmitter.on('new-help-request', sendDat); + + req.on('close', function() { + // clean up after yourself to prevent too many open connections + learnerEmitter.removeListener('help-available-update', sendDat); + learnerEmitter.removeListener('help-queue-update', sendDat); + learnerEmitter.removeListener('new-help-request', sendDat); + }); + + sendDat(); // send an initial burst of data +} + + +// admin.html connects to this SSE feed +function adminSSE(req, res) { + // set up Server-Sent Event header + res.writeHead(200, { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + 'Connection': 'keep-alive' + }); + + // this happens right when a client connects or after the client loses + // connection and auto-reconnects: + var firstTimeDat = {type: 'firstTime', + helpQueue: helpQueue, + helpAvailable: helpAvailable, + fetchTime: (new Date()).toISOString(), + numLearners: EventEmitter.listenerCount(learnerEmitter, + 'help-available-update')}; + constructSSE(res, firstTimeDat); // send an initial burst of data + + function f(e) {constructSSE(res, e);}; + adminEmitter.on('new-help-request', f); + adminEmitter.on('help-available-update', f); + + // Why does this "close" event get triggered on page reload and + // browser window close?!? OHHHHH this connection isn't normally + // closing since we didn't explicitly do res.end() to close the + // connection. The client is just being kept waiting indefinitely, and + // it ain't gonna close on its own. + req.on('close', function() { + // clean up after yourself to prevent too many open connections + adminEmitter.removeListener('new-help-request', f); + adminEmitter.removeListener('help-available-update', f); + }); +} + +function constructSSE(res, data) { + res.write('data: ' + JSON.stringify(data) + '\n\n'); +} + +function adminHTML(req, res) { + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end(fs.readFileSync(__dirname + '/admin.html')); +} + +// when a learner requests help ... +function requestHelp(url, req, res) { + res.writeHead(200, {'Access-Control-Allow-Origin': '*'}); // CORS action + if (!helpAvailable) { + res.end("failure"); + return; // early return! + } + + var logObj = createLogEntry(req, 'new-help-request'); + logObj.url = url.query.url; + logObj.id = url.query.id; + + // if you're already on the queue, don't insert a duplicate: + for (var i=0; i < helpQueue.length; i++) { + if (helpQueue[i].id == logObj.id) { + res.end("failure"); + return; // early return! + } + } + + helpQueue.push(logObj); + res.end("success"); + + learnerEmitter.emit('new-help-request', logObj); + adminEmitter.emit('new-help-request', logObj); + + pgLogWrite(logObj); +} + +// clear the entire queue +function clearHelpQueue(req, res) { + // clear helpQueue QUICKLY + // http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript + while (helpQueue.length > 0) { + var elt = helpQueue.pop(); + var logObj = createLogEntry(req, 'remove-help-request'); + logObj.id = elt.id; + pgLogWrite(logObj); + } + + res.end("success"); + learnerEmitter.emit('help-queue-update'); +} + +// remove an element from the queue with id= and optional reason= +function removeHelpQueueElement(url, req, res) { + for (var i = 0; i < helpQueue.length; i++) { + if (helpQueue[i].id == url.query.id) { + helpQueue.splice(i, 1); + res.end("success"); + learnerEmitter.emit('help-queue-update'); + + var logObj = createLogEntry(req, 'remove-help-request'); + logObj.id = url.query.id; + logObj.reason = url.query.reason; + pgLogWrite(logObj); + return; + } + } + + res.end("failure"); +} + +// end pgbovine diff --git a/v3/packages-src/GChartWrapper-0.9.tar.gz b/v3/packages-src/GChartWrapper-0.9.tar.gz new file mode 100644 index 000000000..1d0747391 Binary files /dev/null and b/v3/packages-src/GChartWrapper-0.9.tar.gz differ diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py new file mode 100644 index 000000000..0e1ebcefc --- /dev/null +++ b/v3/pg_encoder.py @@ -0,0 +1,370 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Thanks to John DeNero for making the encoder work on both Python 2 and 3 + + +# Given an arbitrary piece of Python data, encode it in such a manner +# that it can be later encoded into JSON. +# http://json.org/ +# +# We use this function to encode run-time traces of data structures +# to send to the front-end. +# +# Format: +# Primitives: +# * None, int, long, float, str, bool - unchanged +# (json.dumps encodes these fine verbatim, except for inf, -inf, and nan) +# +# exceptions: float('inf') -> ['SPECIAL_FLOAT', 'Infinity'] +# float('-inf') -> ['SPECIAL_FLOAT', '-Infinity'] +# float('nan') -> ['SPECIAL_FLOAT', 'NaN'] +# x == int(x) -> ['SPECIAL_FLOAT', '%.1f' % x] +# (this way, 3.0 prints as '3.0' and not as 3, which looks like an int) +# +# If render_heap_primitives is True, then primitive values are rendered +# on the heap as ['HEAP_PRIMITIVE', , ] +# +# (for SPECIAL_FLOAT values, is a list like ['SPECIAL_FLOAT', 'Infinity']) +# +# Compound objects: +# * list - ['LIST', elt1, elt2, elt3, ..., eltN] +# * tuple - ['TUPLE', elt1, elt2, elt3, ..., eltN] +# * set - ['SET', elt1, elt2, elt3, ..., eltN] +# * dict - ['DICT', [key1, value1], [key2, value2], ..., [keyN, valueN]] +# * instance - ['INSTANCE', class name, [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * instance with __str__ defined - ['INSTANCE_PPRINT', class name, <__str__ value>] +# * class - ['CLASS', class name, [list of superclass names], [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * function - ['FUNCTION', function name, parent frame ID (for nested functions)] +# * module - ['module', module name] +# * other - [, string representation of object] +# * compound object reference - ['REF', target object's unique_id] +# +# the unique_id is derived from id(), which allows us to capture aliasing + + +# number of significant digits for floats +FLOAT_PRECISION = 4 + + +from collections import defaultdict +import re, types +import sys +import math +typeRE = re.compile("") +classRE = re.compile("") + +import inspect + +# TODO: maybe use the 'six' library to smooth over Py2 and Py3 incompatibilities? +is_python3 = (sys.version_info[0] == 3) +if is_python3: + # avoid name errors (GROSS!) + long = int + unicode = str + + +def is_class(dat): + """Return whether dat is a class.""" + if is_python3: + return isinstance(dat, type) + else: + return type(dat) in (types.ClassType, types.TypeType) + + +def is_instance(dat): + """Return whether dat is an instance of a class.""" + if is_python3: + return type(dat) not in PRIMITIVE_TYPES and \ + isinstance(type(dat), type) and \ + not isinstance(dat, type) + else: + # ugh, classRE match is a bit of a hack :( + return type(dat) == types.InstanceType or classRE.match(str(type(dat))) + + +def get_name(obj): + """Return the name of an object.""" + return obj.__name__ if hasattr(obj, '__name__') else get_name(type(obj)) + + +PRIMITIVE_TYPES = (int, long, float, str, unicode, bool, type(None)) + +def encode_primitive(dat): + t = type(dat) + if t is float: + if math.isinf(dat): + if dat > 0: + return ['SPECIAL_FLOAT', 'Infinity'] + else: + return ['SPECIAL_FLOAT', '-Infinity'] + elif math.isnan(dat): + return ['SPECIAL_FLOAT', 'NaN'] + else: + # render floats like 3.0 as '3.0' and not as 3 + if dat == int(dat): + return ['SPECIAL_FLOAT', '%.1f' % dat] + else: + return round(dat, FLOAT_PRECISION) + elif t is str and (not is_python3): + # hack only for Python 2 strings ... always turn into unicode + # and display '?' when it's not valid unicode + return dat.decode('utf-8', 'replace') + else: + # return all other primitives verbatim + return dat + + +# grab a line number like ' ' or ' ' +def create_lambda_line_number(codeobj, line_to_lambda_code): + try: + lambda_lineno = codeobj.co_firstlineno + lst = line_to_lambda_code[lambda_lineno] + ind = lst.index(codeobj) + # add a suffix for all subsequent lambdas on a line beyond the first + # (nix this for now because order isn't guaranteed when you have + # multiple lambdas on the same line) + ''' + if ind > 0: + lineno_str = str(lambda_lineno) + chr(ord('a') + ind) + else: + lineno_str = str(lambda_lineno) + ''' + lineno_str = str(lambda_lineno) + return ' ' + except: + return '' + + +# Note that this might BLOAT MEMORY CONSUMPTION since we're holding on +# to every reference ever created by the program without ever releasing +# anything! +class ObjectEncoder: + def __init__(self, render_heap_primitives): + # Key: canonicalized small ID + # Value: encoded (compound) heap object + self.encoded_heap_objects = {} + + self.render_heap_primitives = render_heap_primitives + + self.id_to_small_IDs = {} + self.cur_small_ID = 1 + + # wow, creating unique identifiers for lambdas is quite annoying, + # especially if we want to properly differentiate: + # 1.) multiple lambdas defined on the same line, and + # 2.) the same lambda code defined multiple times on different lines + # + # However, it gets confused when there are multiple identical + # lambdas on the same line, like: + # f(lambda x:x*x, lambda y:y*y, lambda x:x*x) + + # (assumes everything is in one file) + # Key: line number + # Value: list of the code objects of lambdas defined + # on that line in the order they were defined + self.line_to_lambda_code = defaultdict(list) + + + def get_heap(self): + return self.encoded_heap_objects + + + def reset_heap(self): + # VERY IMPORTANT to reassign to an empty dict rather than just + # clearing the existing dict, since get_heap() could have been + # called earlier to return a reference to a previous heap state + self.encoded_heap_objects = {} + + def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): + assert ref_obj[0] == 'REF' + func_obj = self.encoded_heap_objects[ref_obj[1]] + assert func_obj[0] == 'FUNCTION' + func_obj[-1] = enclosing_frame_id + + + # return either a primitive object or an object reference; + # and as a side effect, update encoded_heap_objects + def encode(self, dat, get_parent): + """Encode a data value DAT using the GET_PARENT function for parent ids.""" + # primitive type + if not self.render_heap_primitives and type(dat) in PRIMITIVE_TYPES: + return encode_primitive(dat) + # compound type - return an object reference and update encoded_heap_objects + else: + my_id = id(dat) + + try: + my_small_id = self.id_to_small_IDs[my_id] + except KeyError: + my_small_id = self.cur_small_ID + self.id_to_small_IDs[my_id] = self.cur_small_ID + self.cur_small_ID += 1 + + del my_id # to prevent bugs later in this function + + ret = ['REF', my_small_id] + + # punt early if you've already encoded this object + if my_small_id in self.encoded_heap_objects: + return ret + + + # major side-effect! + new_obj = [] + self.encoded_heap_objects[my_small_id] = new_obj + + typ = type(dat) + + if typ == list: + new_obj.append('LIST') + for e in dat: + new_obj.append(self.encode(e, get_parent)) + elif typ == tuple: + new_obj.append('TUPLE') + for e in dat: + new_obj.append(self.encode(e, get_parent)) + elif typ == set: + new_obj.append('SET') + for e in dat: + new_obj.append(self.encode(e, get_parent)) + elif typ == dict: + new_obj.append('DICT') + for (k, v) in dat.items(): + # don't display some built-in locals ... + if k not in ('__module__', '__return__', '__locals__'): + new_obj.append([self.encode(k, get_parent), self.encode(v, get_parent)]) + elif typ in (types.FunctionType, types.MethodType): + if is_python3: + argspec = inspect.getfullargspec(dat) + else: + argspec = inspect.getargspec(dat) + + printed_args = [e for e in argspec.args] + if argspec.varargs: + printed_args.append('*' + argspec.varargs) + + if is_python3: + if argspec.varkw: + printed_args.append('**' + argspec.varkw) + if argspec.kwonlyargs: + printed_args.extend(argspec.kwonlyargs) + else: + if argspec.keywords: + printed_args.append('**' + argspec.keywords) + + func_name = get_name(dat) + + pretty_name = func_name + + # sometimes might fail for, say, , so just ignore + # failures for now ... + try: + pretty_name += '(' + ', '.join(printed_args) + ')' + except TypeError: + pass + + # put a line number suffix on lambdas to more uniquely identify + # them, since they don't have names + if func_name == '': + cod = (dat.__code__ if is_python3 else dat.func_code) # ugh! + lst = self.line_to_lambda_code[cod.co_firstlineno] + if cod not in lst: + lst.append(cod) + pretty_name += create_lambda_line_number(cod, + self.line_to_lambda_code) + + encoded_val = ['FUNCTION', pretty_name, None] + if get_parent: + enclosing_frame_id = get_parent(dat) + encoded_val[2] = enclosing_frame_id + new_obj.extend(encoded_val) + elif typ is types.BuiltinFunctionType: + pretty_name = get_name(dat) + '(...)' + new_obj.extend(['FUNCTION', pretty_name, None]) + elif is_class(dat) or is_instance(dat): + self.encode_class_or_instance(dat, new_obj) + elif typ is types.ModuleType: + new_obj.extend(['module', dat.__name__]) + elif typ in PRIMITIVE_TYPES: + assert self.render_heap_primitives + new_obj.extend(['HEAP_PRIMITIVE', type(dat).__name__, encode_primitive(dat)]) + else: + typeStr = str(typ) + m = typeRE.match(typeStr) + + if not m: + m = classRE.match(typeStr) + + assert m, typ + new_obj.extend([m.group(1), str(dat)]) + + return ret + + + def encode_class_or_instance(self, dat, new_obj): + """Encode dat as a class or instance.""" + if is_instance(dat): + if hasattr(dat, '__class__'): + # common case ... + class_name = get_name(dat.__class__) + else: + # super special case for something like + # "from datetime import datetime_CAPI" in Python 3.2, + # which is some weird 'PyCapsule' type ... + # http://docs.python.org/release/3.1.5/c-api/capsule.html + class_name = get_name(type(dat)) + + if hasattr(dat, '__str__') and \ + (not dat.__class__.__str__ is object.__str__): # make sure it's not the lame default __str__ + # N.B.: when objects are being constructed, this call + # might fail since not all fields have yet been populated + try: + pprint_str = str(dat) + except: + pprint_str = '' + + new_obj.extend(['INSTANCE_PPRINT', class_name, pprint_str]) + return # bail early + else: + new_obj.extend(['INSTANCE', class_name]) + # don't traverse inside modules, or else risk EXPLODING the visualization + if class_name == 'module': + return + else: + superclass_names = [e.__name__ for e in dat.__bases__ if e is not object] + new_obj.extend(['CLASS', get_name(dat), superclass_names]) + + # traverse inside of its __dict__ to grab attributes + # (filter out useless-seeming ones, based on anecdotal observation): + hidden = ('__doc__', '__module__', '__return__', '__dict__', + '__locals__', '__weakref__', '__qualname__') + if hasattr(dat, '__dict__'): + user_attrs = sorted([e for e in dat.__dict__ if e not in hidden]) + else: + user_attrs = [] + + for attr in user_attrs: + new_obj.append([self.encode(attr, None), self.encode(dat.__dict__[attr], None)]) + diff --git a/v3/pg_logger.py b/v3/pg_logger.py new file mode 100644 index 000000000..b680d9c99 --- /dev/null +++ b/v3/pg_logger.py @@ -0,0 +1,1420 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# This is the meat of the Online Python Tutor back-end. It implements a +# full logger for Python program execution (based on pdb, the standard +# Python debugger imported via the bdb module), printing out the values +# of all in-scope data structures after each executed instruction. + + + +import sys +import bdb # the KEY import here! +import re +import traceback +import types + +# TODO: use the 'six' package to smooth out Py2 and Py3 differences +is_python3 = (sys.version_info[0] == 3) + +# NB: don't use cStringIO since it doesn't support unicode!!! +if is_python3: + import io as StringIO +else: + import StringIO +import pg_encoder + + +# TODO: not threadsafe: + +# upper-bound on the number of executed lines, in order to guard against +# infinite loops +MAX_EXECUTED_LINES = 300 + +#DEBUG = False +DEBUG = True + +BREAKPOINT_STR = '#break' + +CLASS_RE = re.compile('class\s+') + + +# simple sandboxing scheme: +# +# - use resource.setrlimit to deprive this process of ANY file descriptors +# (which will cause file read/write and subprocess shell launches to fail) +# - restrict user builtins and module imports +# (beware that this is NOT foolproof at all ... there are known flaws!) +# +# ALWAYS use defense-in-depth and don't just rely on these simple mechanisms +try: + import resource + resource_module_loaded = True +except ImportError: + # Google App Engine doesn't seem to have the 'resource' module + resource_module_loaded = False + + +# From http://coreygoldberg.blogspot.com/2009/05/python-redirect-or-turn-off-stdout-and.html +class NullDevice(): + def write(self, s): + pass + + +# These could lead to XSS or other code injection attacks, so be careful: +__html__ = None +def setHTML(htmlStr): + global __html__ + __html__ = htmlStr + +__css__ = None +def setCSS(cssStr): + global __css__ + __css__ = cssStr + +__js__ = None +def setJS(jsStr): + global __js__ + __js__ = jsStr + + +# ugh, I can't figure out why in Python 2, __builtins__ seems to +# be a dict, but in Python 3, __builtins__ seems to be a module, +# so just handle both cases ... UGLY! +if type(__builtins__) is dict: + BUILTIN_IMPORT = __builtins__['__import__'] +else: + assert type(__builtins__) is types.ModuleType + BUILTIN_IMPORT = __builtins__.__import__ + + +# whitelist of module imports +ALLOWED_STDLIB_MODULE_IMPORTS = ('math', 'random', 'datetime', + 'functools', 'itertools', 'operator', 'string', + 'collections', 're', 'json', + 'heapq', 'bisect') + +# whitelist of custom modules to import into OPT +# (TODO: support modules in a subdirectory, but there are various +# logistical problems with doing so that I can't overcome at the moment, +# especially getting setHTML, setCSS, and setJS to work in the imported +# modules.) +CUSTOM_MODULE_IMPORTS = ('callback_module', + 'ttt_module', + 'html_module', + 'htmlexample_module', +# ignore these troublesome imports for now +# 'watch_module', # 'import sys' might be troublesome +# 'bintree_module', +# 'GChartWrapper', + 'matrix', + 'htmlFrame') + + +# PREEMPTIVELY import all of these modules, so that when the user's +# script imports them, it won't try to do a file read (since they've +# already been imported and cached in memory). Remember that when +# the user's code runs, resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) +# will already be in effect, so no more files can be opened. +# +# NB: All modules in CUSTOM_MODULE_IMPORTS will be imported, warts and +# all, so they better work on Python 2 and 3! +for m in ALLOWED_STDLIB_MODULE_IMPORTS + CUSTOM_MODULE_IMPORTS: + __import__(m) + + +# Restrict imports to a whitelist +def __restricted_import__(*args): + # filter args to ONLY take in real strings so that someone can't + # subclass str and bypass the 'in' test on the next line + args = [e for e in args if type(e) is str] + + if args[0] in ALLOWED_STDLIB_MODULE_IMPORTS + CUSTOM_MODULE_IMPORTS: + imported_mod = BUILTIN_IMPORT(*args) + + if args[0] in CUSTOM_MODULE_IMPORTS: + # add special magical functions to custom imported modules + setattr(imported_mod, 'setHTML', setHTML) + setattr(imported_mod, 'setCSS', setCSS) + setattr(imported_mod, 'setJS', setJS) + + # somewhat weak protection against imported modules that contain one + # of these troublesome builtins. again, NOTHING is foolproof ... + # just more defense in depth :) + for mod in ('os', 'sys', 'posix', 'gc'): + if hasattr(imported_mod, mod): + delattr(imported_mod, mod) + + return imported_mod + else: + raise ImportError('{0} not supported'.format(args[0])) + + +# Support interactive user input by: +# +# 1. running the entire program up to a call to raw_input (or input in py3), +# 2. bailing and returning a trace ending in a special 'raw_input' event, +# 3. letting the web frontend issue a prompt to the user to grab a string, +# 4. RE-RUNNING the whole program with that string added to input_string_queue, +# 5. which should bring execution to the next raw_input call (if +# available), or to termination. +# Repeat until no more raw_input calls are encountered. +# Note that this is mad inefficient, but is simple to implement! + +# VERY IMPORTANT -- set random seed to 0 to ensure deterministic execution: +import random +random.seed(0) + +# queue of input strings passed from either raw_input or mouse_input +input_string_queue = [] + +class RawInputException(Exception): + pass + +def raw_input_wrapper(prompt=''): + if input_string_queue: + input_str = input_string_queue.pop(0) + + # write the prompt and user input to stdout, to emulate what happens + # at the terminal + sys.stdout.write(prompt) + sys.stdout.write(input_str + "\n") # newline to simulate the user hitting Enter + return input_str + raise RawInputException(prompt) + +class MouseInputException(Exception): + pass + +def mouse_input_wrapper(prompt=''): + if input_string_queue: + return input_string_queue.pop(0) + raise MouseInputException(prompt) + + + +# blacklist of builtins +BANNED_BUILTINS = ['reload', 'open', 'compile', + 'file', 'eval', 'exec', 'execfile', + 'exit', 'quit', 'help', + 'dir', 'globals', 'locals', 'vars'] +# Peter says 'apply' isn't dangerous, so don't ban it + +# ban input() in Python 2 since it does an eval! +# (Python 3 input is Python 2 raw_input, so we're okay) +if not is_python3: + BANNED_BUILTINS.append('input') + + +IGNORE_VARS = set(('__user_stdout__', '__OPT_toplevel__', '__builtins__', '__name__', '__exception__', '__doc__', '__package__')) + +def get_user_stdout(frame): + my_user_stdout = frame.f_globals['__user_stdout__'] + + # This is SUPER KRAZY! In Python 2, the buflist inside of a StringIO + # instance can be made up of both str and unicode, so we need to convert + # the str to unicode and replace invalid characters with the Unicode '?' + # But leave unicode elements alone. This way, EVERYTHING inside buflist + # will be unicode. (Note that in Python 3, everything is already unicode, + # so we're fine.) + if not is_python3: + my_user_stdout.buflist = [(e.decode('utf-8', 'replace') + if type(e) is str + else e) + for e in my_user_stdout.buflist] + return my_user_stdout.getvalue() + + +''' +2013-12-26 + +Okay, what's with this f_valuestack business? + +If you compile your own CPython and patch Objects/frameobject.c to add a +Python accessor for f_valuestack, then you can actually access the value +stack, which is useful for, say, grabbbing the objects within +list/set/dict comprehensions as they're being built. e.g., try: + + z = [x*y for x in range(5) for y in range(5)] + +Note that on pythontutor.com, I am currently running custom-compiled +versions of Python-2.7.6 and Python-3.3.3 with this f_valuestack hack. +Unless you run your own custom CPython, you won't get these benefits. + + +Patch: + + static PyObject * + frame_getlineno(PyFrameObject *f, void *closure) + { + return PyLong_FromLong(PyFrame_GetLineNumber(f)); + } + ++// copied from Py2crazy, which was for Python 2, but let's hope this still works! ++static PyObject * ++frame_getvaluestack(PyFrameObject* f) { ++ // pgbovine - TODO: will this memory leak? hopefully not, ++ // since all other accessors seem to follow the same idiom ++ PyObject* lst = PyList_New(0); ++ if (f->f_stacktop != NULL) { ++ PyObject** p = NULL; ++ for (p = f->f_valuestack; p < f->f_stacktop; p++) { ++ PyList_Append(lst, *p); ++ } ++ } ++ ++ return lst; ++} ++ + /* Setter for f_lineno - you can set f_lineno from within a trace function in + * order to jump to a given line of code, subject to some restrictions. Most + * lines are OK to jump to because they don't make any assumptions about the +@@ -368,6 +384,11 @@ + + static PyGetSetDef frame_getsetlist[] = { + {"f_locals", (getter)frame_getlocals, NULL, NULL}, + {"f_lineno", (getter)frame_getlineno, + (setter)frame_setlineno, NULL}, + {"f_trace", (getter)frame_gettrace, (setter)frame_settrace, NULL}, ++ ++ // pgbovine ++ {"f_valuestack",(getter)frame_getvaluestack, ++ (setter)NULL /* don't let it be set */, NULL}, ++ + {0} + }; +''' + +# at_global_scope should be true only if 'frame' represents the global scope +def get_user_globals(frame, at_global_scope=False): + d = filter_var_dict(frame.f_globals) + + # don't blurt out all of f_valuestack for now ... + ''' + if at_global_scope and hasattr(frame, 'f_valuestack'): + for (i, e) in enumerate(frame.f_valuestack): + d['_tmp' + str(i+1)] = e + ''' + + # print out list objects being built up in Python 2.x list comprehensions + # (which don't have its own special frame, sadly) + if not is_python3 and hasattr(frame, 'f_valuestack'): + for (i, e) in enumerate([e for e in frame.f_valuestack if type(e) is list]): + d['_tmp' + str(i+1)] = e + + # also filter out __return__ for globals only, but NOT for locals + if '__return__' in d: + del d['__return__'] + return d + +def get_user_locals(frame): + ret = filter_var_dict(frame.f_locals) + # don't blurt out all of f_valuestack for now ... + ''' + if hasattr(frame, 'f_valuestack'): + for (i, e) in enumerate(frame.f_valuestack): + ret['_tmp' + str(i+1)] = e + ''' + + # special printing of list/set/dict comprehension objects as they are + # being built up incrementally ... + f_name = frame.f_code.co_name + if hasattr(frame, 'f_valuestack'): + # print out list objects being built up in Python 2.x list comprehensions + # (which don't have its own special frame, sadly) + if not is_python3: + for (i, e) in enumerate([e for e in frame.f_valuestack + if type(e) is list]): + ret['_tmp' + str(i+1)] = e + + # for dict and set comprehensions, which have their own frames: + if f_name.endswith('comp>'): + for (i, e) in enumerate([e for e in frame.f_valuestack + if type(e) in (list, set, dict)]): + ret['_tmp' + str(i+1)] = e + + return ret + +def filter_var_dict(d): + ret = {} + for (k,v) in d.items(): + if k not in IGNORE_VARS: + ret[k] = v + return ret + + +# yield all function objects locally-reachable from frame, +# making sure to traverse inside all compound objects ... +def visit_all_locally_reachable_function_objs(frame): + for (k, v) in get_user_locals(frame).items(): + for e in visit_function_obj(v, set()): + if e: # only non-null if it's a function object + assert type(e) in (types.FunctionType, types.MethodType) + yield e + + +# TODO: this might be slow if we're traversing inside lots of objects: +def visit_function_obj(v, ids_seen_set): + v_id = id(v) + + # to prevent infinite loop + if v_id in ids_seen_set: + yield None + else: + ids_seen_set.add(v_id) + + typ = type(v) + + # simple base case + if typ in (types.FunctionType, types.MethodType): + yield v + + # recursive cases + elif typ in (list, tuple, set): + for child in v: + for child_res in visit_function_obj(child, ids_seen_set): + yield child_res + + elif typ == dict or pg_encoder.is_class(v) or pg_encoder.is_instance(v): + contents_dict = None + + if typ == dict: + contents_dict = v + # warning: some classes or instances don't have __dict__ attributes + elif hasattr(v, '__dict__'): + contents_dict = v.__dict__ + + if contents_dict: + for (key_child, val_child) in contents_dict.items(): + for key_child_res in visit_function_obj(key_child, ids_seen_set): + yield key_child_res + for val_child_res in visit_function_obj(val_child, ids_seen_set): + yield val_child_res + + # degenerate base case + yield None + + +class PGLogger(bdb.Bdb): + + def __init__(self, cumulative_mode, heap_primitives, show_only_outputs, finalizer_func, + disable_security_checks=False, crazy_mode=False): + bdb.Bdb.__init__(self) + self.mainpyfile = '' + self._wait_for_mainpyfile = 0 + + self.disable_security_checks = disable_security_checks + + # if True, then displays ALL stack frames that have ever existed + # rather than only those currently on the stack (and their + # lexical parents) + self.cumulative_mode = cumulative_mode + + # if True, then render certain primitive objects as heap objects + self.render_heap_primitives = heap_primitives + + # if True, then don't render any data structures in the trace, + # and show only outputs + self.show_only_outputs = show_only_outputs + + # Run using the custom Py2crazy Python interpreter + self.crazy_mode = crazy_mode + + # a function that takes the output trace as a parameter and + # processes it + self.finalizer_func = finalizer_func + + # each entry contains a dict with the information for a single + # executed line + self.trace = [] + + # if this is true, don't put any more stuff into self.trace + self.done = False + + # if this is non-null, don't do any more tracing until a + # 'return' instruction with a stack gotten from + # get_stack_code_IDs() that matches wait_for_return_stack + self.wait_for_return_stack = None + + #http://stackoverflow.com/questions/2112396/in-python-in-google-app-engine-how-do-you-capture-output-produced-by-the-print + self.GAE_STDOUT = sys.stdout + + # Key: function object + # Value: parent frame + self.closures = {} + + # set of function objects that were defined in the global scope + self.globally_defined_funcs = set() + + # Key: frame object + # Value: monotonically increasing small ID, based on call order + self.frame_ordered_ids = {} + self.cur_frame_id = 1 + + # List of frames to KEEP AROUND after the function exits. + # If cumulative_mode is True, then keep ALL frames in + # zombie_frames; otherwise keep only frames where + # nested functions were defined within them. + self.zombie_frames = [] + + # set of elements within zombie_frames that are also + # LEXICAL PARENTS of other frames + self.parent_frames_set = set() + + # all globals that ever appeared in the program, in the order in + # which they appeared. note that this might be a superset of all + # the globals that exist at any particular execution point, + # since globals might have been deleted (using, say, 'del') + self.all_globals_in_order = [] + + # very important for this single object to persist throughout + # execution, or else canonical small IDs won't be consistent. + self.encoder = pg_encoder.ObjectEncoder(self.render_heap_primitives) + + self.executed_script = None # Python script to be executed! + + # if there is at least one line that ends with BREAKPOINT_STR, + # then activate "breakpoint mode", where execution should stop + # ONLY at breakpoint lines. + self.breakpoints = [] + + self.prev_lineno = -1 # keep track of previous line just executed + + + def get_frame_id(self, cur_frame): + return self.frame_ordered_ids[cur_frame] + + # Returns the (lexical) parent of a function value. + def get_parent_of_function(self, val): + if val not in self.closures: + return None + return self.get_frame_id(self.closures[val]) + + + # Returns the (lexical) parent frame of the function that was called + # to create the stack frame 'frame'. + # + # OKAY, this is a SUPER hack, but I don't see a way around it + # since it's impossible to tell exactly which function + # ('closure') object was called to create 'frame'. + # + # The Python interpreter doesn't maintain this information, + # so unless we hack the interpreter, we will simply have + # to make an educated guess based on the contents of local + # variables inherited from possible parent frame candidates. + def get_parent_frame(self, frame): + for (func_obj, parent_frame) in self.closures.items(): + # ok, there's a possible match, but let's compare the + # local variables in parent_frame to those of frame + # to make sure. this is a hack that happens to work because in + # Python, each stack frame inherits ('inlines') a copy of the + # variables from its (lexical) parent frame. + if func_obj.__code__ == frame.f_code: + all_matched = True + for k in frame.f_locals: + # Do not try to match local names + if k in frame.f_code.co_varnames: + continue + if k != '__return__' and k in parent_frame.f_locals: + if parent_frame.f_locals[k] != frame.f_locals[k]: + all_matched = False + break + + if all_matched: + return parent_frame + + return None + + + def lookup_zombie_frame_by_id(self, frame_id): + # TODO: kinda inefficient + for e in self.zombie_frames: + if self.get_frame_id(e) == frame_id: + return e + assert False # should never get here + + + # unused ... + #def reset(self): + # bdb.Bdb.reset(self) + # self.forget() + + + def forget(self): + self.lineno = None + self.stack = [] + self.curindex = 0 + self.curframe = None + + def setup(self, f, t): + self.forget() + self.stack, self.curindex = self.get_stack(f, t) + self.curframe = self.stack[self.curindex][0] + + # should be a reasonably unique ID to match calls and returns: + def get_stack_code_IDs(self): + return [id(e[0].f_code) for e in self.stack] + + + # Override Bdb methods + + def user_call(self, frame, argument_list): + """This method is called when there is the remote possibility + that we ever need to stop in this function.""" + # TODO: figure out a way to move this down to 'def interaction' + # or right before self.trace.append ... + if self.done: return + + if self._wait_for_mainpyfile: + return + if self.stop_here(frame): + # delete __return__ so that on subsequent calls to + # a generator function, the OLD yielded (returned) + # value gets deleted from the frame ... + try: + del frame.f_locals['__return__'] + except KeyError: + pass + + self.interaction(frame, None, 'call') + + def user_line(self, frame): + """This function is called when we stop or break at this line.""" + if self.done: return + + if self._wait_for_mainpyfile: + if (self.canonic(frame.f_code.co_filename) != "" or + frame.f_lineno <= 0): + return + self._wait_for_mainpyfile = 0 + self.interaction(frame, None, 'step_line') + + def user_return(self, frame, return_value): + """This function is called when a return trap is set here.""" + if self.done: return + + frame.f_locals['__return__'] = return_value + self.interaction(frame, None, 'return') + + def user_exception(self, frame, exc_info): + """This function is called if an exception occurs, + but only if we are to stop at or just below this level.""" + if self.done: return + + exc_type, exc_value, exc_traceback = exc_info + frame.f_locals['__exception__'] = exc_type, exc_value + if type(exc_type) == type(''): + exc_type_name = exc_type + else: exc_type_name = exc_type.__name__ + + if exc_type_name == 'RawInputException': + self.trace.append(dict(event='raw_input', prompt=exc_value.args[0])) + self.done = True + elif exc_type_name == 'MouseInputException': + self.trace.append(dict(event='mouse_input', prompt=exc_value.args[0])) + self.done = True + else: + self.interaction(frame, exc_traceback, 'exception') + + def get_script_line(self, n): + return self.executed_script_lines[n-1] + + # General interaction function + + def interaction(self, frame, traceback, event_type): + self.setup(frame, traceback) + tos = self.stack[self.curindex] + top_frame = tos[0] + lineno = tos[1] + + + # debug ... + ''' + print >> sys.stderr + print >> sys.stderr, '=== STACK ===', 'curindex:', self.curindex + for (e,ln) in self.stack: + print >> sys.stderr, e.f_code.co_name + ' ' + e.f_code.co_filename + ' ' + str(ln) + print >> sys.stderr, "top_frame", top_frame.f_code.co_name + ''' + + + # don't trace inside of ANY functions that aren't user-written code + # (e.g., those from imported modules -- e.g., random, re -- or the + # __restricted_import__ function in this file) + # + # empirically, it seems like the FIRST entry in self.stack is + # the 'run' function from bdb.py, but everything else on the + # stack is the user program's "real stack" + + # Look only at the "topmost" frame on the stack ... + + # it seems like user-written code has a filename of '', + # but maybe there are false positives too? + if self.canonic(top_frame.f_code.co_filename) != '': + return + # also don't trace inside of the magic "constructor" code + if top_frame.f_code.co_name == '__new__': + return + # or __repr__, which is often called when running print statements + if top_frame.f_code.co_name == '__repr__': + return + + # if top_frame.f_globals doesn't contain the sentinel '__OPT_toplevel__', + # then we're in another global scope altogether, so skip it! + # (this comes up in tests/backend-tests/namedtuple.txt) + if '__OPT_toplevel__' not in top_frame.f_globals: + return + + + # OLD CODE -- bail if any element on the stack matches these conditions + # note that the old code passes tests/backend-tests/namedtuple.txt + # but the new code above doesn't :/ + ''' + for (cur_frame, cur_line) in self.stack[1:]: + # it seems like user-written code has a filename of '', + # but maybe there are false positives too? + if self.canonic(cur_frame.f_code.co_filename) != '': + return + # also don't trace inside of the magic "constructor" code + if cur_frame.f_code.co_name == '__new__': + return + # or __repr__, which is often called when running print statements + if cur_frame.f_code.co_name == '__repr__': + return + ''' + + + # don't trace if wait_for_return_stack is non-null ... + if self.wait_for_return_stack: + if event_type == 'return' and \ + (self.wait_for_return_stack == self.get_stack_code_IDs()): + self.wait_for_return_stack = None # reset! + return # always bail! + else: + # Skip all "calls" that are actually class definitions, since + # those faux calls produce lots of ugly cruft in the trace. + # + # NB: Only trigger on calls to functions defined in + # user-written code (i.e., co_filename == ''), but that + # should already be ensured by the above check for whether we're + # in user-written code. + if event_type == 'call': + func_line = self.get_script_line(top_frame.f_code.co_firstlineno) + if CLASS_RE.match(func_line.lstrip()): # ignore leading spaces + self.wait_for_return_stack = self.get_stack_code_IDs() + return + + + self.encoder.reset_heap() # VERY VERY VERY IMPORTANT, + # or else we won't properly capture heap object mutations in the trace! + + if event_type == 'call': + # Don't be so strict about this assertion because it FAILS + # when you're calling a generator (not for the first time), + # since that frame has already previously been on the stack ... + #assert top_frame not in self.frame_ordered_ids + + self.frame_ordered_ids[top_frame] = self.cur_frame_id + self.cur_frame_id += 1 + + if self.cumulative_mode: + self.zombie_frames.append(top_frame) + + + # only render zombie frames that are NO LONGER on the stack + # + # subtle: self.stack[:self.curindex+1] is the real stack, since + # everything after self.curindex+1 is beyond the top of the + # stack. this seems to be relevant only when there's an exception, + # since the ENTIRE stack is preserved but self.curindex + # starts decrementing as the exception bubbles up the stack. + cur_stack_frames = [e[0] for e in self.stack[:self.curindex+1]] + zombie_frames_to_render = [e for e in self.zombie_frames if e not in cur_stack_frames] + + + # each element is a pair of (function name, ENCODED locals dict) + encoded_stack_locals = [] + + + # returns a dict with keys: function name, frame id, id of parent frame, encoded_locals dict + def create_encoded_stack_entry(cur_frame): + ret = {} + + + parent_frame_id_list = [] + + f = cur_frame + while True: + p = self.get_parent_frame(f) + if p: + pid = self.get_frame_id(p) + assert pid + parent_frame_id_list.append(pid) + f = p + else: + break + + + cur_name = cur_frame.f_code.co_name + + if cur_name == '': + cur_name = 'unnamed function' + + # augment lambdas with line number + if cur_name == '': + cur_name += pg_encoder.create_lambda_line_number(cur_frame.f_code, + self.encoder.line_to_lambda_code) + + # encode in a JSON-friendly format now, in order to prevent ill + # effects of aliasing later down the line ... + encoded_locals = {} + + for (k, v) in get_user_locals(cur_frame).items(): + is_in_parent_frame = False + + # don't display locals that appear in your parents' stack frames, + # since that's redundant + for pid in parent_frame_id_list: + parent_frame = self.lookup_zombie_frame_by_id(pid) + if k in parent_frame.f_locals: + # ignore __return__, which is never copied + if k != '__return__': + # these values SHOULD BE ALIASES + # (don't do an 'is' check since it might not fire for primitives) + if parent_frame.f_locals[k] == v: + is_in_parent_frame = True + + if is_in_parent_frame and k not in cur_frame.f_code.co_varnames: + continue + + # don't display some built-in locals ... + if k == '__module__': + continue + + encoded_val = self.encoder.encode(v, self.get_parent_of_function) + encoded_locals[k] = encoded_val + + + # order the variable names in a sensible way: + + # Let's start with co_varnames, since it (often) contains all + # variables in this frame, some of which might not exist yet. + ordered_varnames = [] + for e in cur_frame.f_code.co_varnames: + if e in encoded_locals: + ordered_varnames.append(e) + + # sometimes co_varnames doesn't contain all of the true local + # variables: e.g., when executing a 'class' definition. in that + # case, iterate over encoded_locals and push them onto the end + # of ordered_varnames in alphabetical order + for e in sorted(encoded_locals.keys()): + if e != '__return__' and e not in ordered_varnames: + ordered_varnames.append(e) + + # finally, put __return__ at the very end + if '__return__' in encoded_locals: + ordered_varnames.append('__return__') + + # doctor Python 3 initializer to look like a normal function (denero) + if '__locals__' in encoded_locals: + ordered_varnames.remove('__locals__') + local = encoded_locals.pop('__locals__') + if encoded_locals.get('__return__', True) is None: + encoded_locals['__return__'] = local + + # crucial sanity checks! + assert len(ordered_varnames) == len(encoded_locals) + for e in ordered_varnames: + assert e in encoded_locals + + return dict(func_name=cur_name, + is_parent=(cur_frame in self.parent_frames_set), + frame_id=self.get_frame_id(cur_frame), + parent_frame_id_list=parent_frame_id_list, + encoded_locals=encoded_locals, + ordered_varnames=ordered_varnames) + + + i = self.curindex + + # look for whether a nested function has been defined during + # this particular call: + if i > 1: # i == 1 implies that there's only a global scope visible + for v in visit_all_locally_reachable_function_objs(top_frame): + if (v not in self.closures and \ + v not in self.globally_defined_funcs): + + # Look for the presence of the code object (v.func_code + # for Python 2 or v.__code__ for Python 3) in the + # constant pool (f_code.co_consts) of an enclosing + # stack frame, and set that frame as your parent. + # + # This technique properly handles lambdas passed as + # function parameters. e.g., this example: + # + # def foo(x): + # bar(lambda y: x + y) + # def bar(a): + # print a(20) + # foo(10) + chosen_parent_frame = None + # SUPER hacky but seems to work -- use reversed(self.stack) + # because we want to traverse starting from the TOP of the stack + # (most recent frame) and find the first frame containing + # a constant code object that matches v.__code__ or v.func_code + # + # required for this example from Berkeley CS61a: + # + # def f(p, k): + # def g(): + # print(k) + # if k == 0: + # f(g, 1) + # f(None, 0) + # + # there are two calls to f, each of which defines a + # closure g that should point to the respective frame. + # + # note that for the second call to f, the parent of the + # g defined in there should be that frame, which is at + # the TOP of the stack. this reversed() hack does the + # right thing. note that if you don't traverse the stack + # backwards, then you will mistakenly get the parent as + # the FIRST f frame (bottom of the stack). + for (my_frame, my_lineno) in reversed(self.stack): + if chosen_parent_frame: + break + + for frame_const in my_frame.f_code.co_consts: + if frame_const is (v.__code__ if is_python3 else v.func_code): + chosen_parent_frame = my_frame + break + + # 2013-12-01 commented out this line so tests/backend-tests/papajohn-monster.txt + # works without an assertion failure ... + #assert chosen_parent_frame # I hope this always passes :0 + + # this condition should be False for functions declared in global scope ... + if chosen_parent_frame in self.frame_ordered_ids: + self.closures[v] = chosen_parent_frame + self.parent_frames_set.add(chosen_parent_frame) # unequivocally add to this set!!! + if not chosen_parent_frame in self.zombie_frames: + self.zombie_frames.append(chosen_parent_frame) + else: + # if there is only a global scope visible ... + for (k, v) in get_user_globals(top_frame).items(): + if (type(v) in (types.FunctionType, types.MethodType) and \ + v not in self.closures): + self.globally_defined_funcs.add(v) + + + # climb up until you find '', which is (hopefully) the global scope + while True: + cur_frame = self.stack[i][0] + cur_name = cur_frame.f_code.co_name + if cur_name == '': + break + + # do this check because in some cases, certain frames on the + # stack might NOT be tracked, so don't push a stack entry for + # those frames. this happens when you have a callback function + # in an imported module. e.g., your code: + # def foo(): + # bar(baz) + # + # def baz(): pass + # + # imported module code: + # def bar(callback_func): + # callback_func() + # + # when baz is executing, the real stack is [foo, bar, baz] but + # bar is in imported module code, so pg_logger doesn't trace + # it, and it doesn't show up in frame_ordered_ids. thus, the + # stack to render should only be [foo, baz]. + if cur_frame in self.frame_ordered_ids: + encoded_stack_locals.append(create_encoded_stack_entry(cur_frame)) + i -= 1 + + zombie_encoded_stack_locals = [create_encoded_stack_entry(e) for e in zombie_frames_to_render] + + + # encode in a JSON-friendly format now, in order to prevent ill + # effects of aliasing later down the line ... + encoded_globals = {} + for (k, v) in get_user_globals(tos[0], at_global_scope=(self.curindex <= 1)).items(): + encoded_val = self.encoder.encode(v, self.get_parent_of_function) + encoded_globals[k] = encoded_val + + if k not in self.all_globals_in_order: + self.all_globals_in_order.append(k) + + # filter out globals that don't exist at this execution point + # (because they've been, say, deleted with 'del') + ordered_globals = [e for e in self.all_globals_in_order if e in encoded_globals] + assert len(ordered_globals) == len(encoded_globals) + + + # merge zombie_encoded_stack_locals and encoded_stack_locals + # into one master ordered list using some simple rules for + # making it look aesthetically pretty + stack_to_render = []; + + # first push all regular stack entries + if encoded_stack_locals: + for e in encoded_stack_locals: + e['is_zombie'] = False + e['is_highlighted'] = False + stack_to_render.append(e) + + # highlight the top-most active stack entry + stack_to_render[0]['is_highlighted'] = True + + + # now push all zombie stack entries + for e in zombie_encoded_stack_locals: + # don't display return value for zombie frames + # TODO: reconsider ... + ''' + try: + e['ordered_varnames'].remove('__return__') + except ValueError: + pass + ''' + + e['is_zombie'] = True + e['is_highlighted'] = False # never highlight zombie entries + + stack_to_render.append(e) + + # now sort by frame_id since that sorts frames in "chronological + # order" based on the order they were invoked + stack_to_render.sort(key=lambda e: e['frame_id']) + + + + # create a unique hash for this stack entry, so that the + # frontend can uniquely identify it when doing incremental + # rendering. the strategy is to use a frankenstein-like mix of the + # relevant fields to properly disambiguate closures and recursive + # calls to the same function + for e in stack_to_render: + hash_str = e['func_name'] + # frame_id is UNIQUE, so it can disambiguate recursive calls + hash_str += '_f' + str(e['frame_id']) + + # needed to refresh GUI display ... + if e['is_parent']: + hash_str += '_p' + + # TODO: this is no longer needed, right? (since frame_id is unique) + #if e['parent_frame_id_list']: + # hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) + if e['is_zombie']: + hash_str += '_z' + + e['unique_hash'] = hash_str + + + if self.show_only_outputs: + trace_entry = dict(line=lineno, + event=event_type, + func_name=tos[0].f_code.co_name, + globals={}, + ordered_globals=[], + stack_to_render=[], + heap={}, + stdout=get_user_stdout(tos[0])) + else: + trace_entry = dict(line=lineno, + event=event_type, + func_name=tos[0].f_code.co_name, + globals=encoded_globals, + ordered_globals=ordered_globals, + stack_to_render=stack_to_render, + heap=self.encoder.get_heap(), + stdout=get_user_stdout(tos[0])) + + # optional column numbers for greater precision + # (only relevant in Py2crazy, a hacked CPython that supports column numbers) + if self.crazy_mode: + # at the very least, grab the column number + trace_entry['column'] = frame.f_colno + + # now try to find start_col and extent + # (-1 is an invalid instruction index) + if frame.f_lasti >= 0: + key = (frame.f_code.co_code, frame.f_lineno, frame.f_colno,frame.f_lasti) + if key in self.bytecode_map: + v = self.bytecode_map[key] + trace_entry['expr_start_col'] = v.start_col + trace_entry['expr_width'] = v.extent + trace_entry['opcode'] = v.opcode + + + # TODO: refactor into a non-global + global __html__, __css__, __js__ + if __html__: + trace_entry['html_output'] = __html__ + if __css__: + trace_entry['css_output'] = __css__ + if __js__: + trace_entry['js_output'] = __js__ + + # if there's an exception, then record its info: + if event_type == 'exception': + # always check in f_locals + exc = frame.f_locals['__exception__'] + trace_entry['exception_msg'] = exc[0].__name__ + ': ' + str(exc[1]) + + + # append to the trace only the breakpoint line and the next + # executed line, so that if you set only ONE breakpoint, OPT shows + # the state before and after that line gets executed. + append_to_trace = True + if self.breakpoints: + if not ((lineno in self.breakpoints) or (self.prev_lineno in self.breakpoints)): + append_to_trace = False + + # TRICKY -- however, if there's an exception, then ALWAYS + # append it to the trace, so that the error can be displayed + if event_type == 'exception': + append_to_trace = True + + self.prev_lineno = lineno + + if append_to_trace: + self.trace.append(trace_entry) + + + # sanity check to make sure the state of the world at a 'call' instruction + # is identical to that at the instruction immediately following it ... + ''' + if len(self.trace) > 1: + cur = self.trace[-1] + prev = self.trace[-2] + if prev['event'] == 'call': + assert cur['globals'] == prev['globals'] + for (s1, s2) in zip(cur['stack_to_render'], prev['stack_to_render']): + assert s1 == s2 + assert cur['heap'] == prev['heap'] + assert cur['stdout'] == prev['stdout'] + ''' + + + if len(self.trace) >= MAX_EXECUTED_LINES: + self.trace.append(dict(event='instruction_limit_reached', exception_msg='(stopped after ' + str(MAX_EXECUTED_LINES) + ' steps to prevent possible infinite loop)')) + self.force_terminate() + + self.forget() + + + def _runscript(self, script_str, custom_globals=None): + self.executed_script = script_str + self.executed_script_lines = self.executed_script.splitlines() + + for (i, line) in enumerate(self.executed_script_lines): + line_no = i + 1 + if line.endswith(BREAKPOINT_STR): + self.breakpoints.append(line_no) + + + # populate an extent map to get more accurate ranges from code + if self.crazy_mode: + # in Py2crazy standard library as Python-2.7.5/Lib/super_dis.py + import super_dis + try: + self.bytecode_map = super_dis.get_bytecode_map(self.executed_script) + except: + # failure oblivious + self.bytecode_map = {} + + + # When bdb sets tracing, a number of call and line events happens + # BEFORE debugger even reaches user's code (and the exact sequence of + # events depends on python version). So we take special measures to + # avoid stopping before we reach the main script (see user_line and + # user_call for details). + self._wait_for_mainpyfile = 1 + + + # ok, let's try to sorta 'sandbox' the user script by not + # allowing certain potentially dangerous operations. + user_builtins = {} + + # ugh, I can't figure out why in Python 2, __builtins__ seems to + # be a dict, but in Python 3, __builtins__ seems to be a module, + # so just handle both cases ... UGLY! + if type(__builtins__) is dict: + builtin_items = __builtins__.items() + else: + assert type(__builtins__) is types.ModuleType + builtin_items = [] + for k in dir(__builtins__): + builtin_items.append((k, getattr(__builtins__, k))) + + for (k, v) in builtin_items: + if k in BANNED_BUILTINS: + continue + elif k == '__import__': + user_builtins[k] = __restricted_import__ + else: + if k == 'raw_input': + user_builtins[k] = raw_input_wrapper + elif k == 'input' and is_python3: + # Python 3 input() is Python 2 raw_input() + user_builtins[k] = raw_input_wrapper + else: + user_builtins[k] = v + + user_builtins['mouse_input'] = mouse_input_wrapper + + # TODO: we can disable these imports here, but a crafty user can + # always get a hold of them by importing one of the external + # modules, so there's no point in trying security by obscurity + user_builtins['setHTML'] = setHTML + user_builtins['setCSS'] = setCSS + user_builtins['setJS'] = setJS + + user_stdout = StringIO.StringIO() + + sys.stdout = user_stdout + + self.ORIGINAL_STDERR = sys.stderr + + # don't do this, or else certain kinds of errors, such as syntax + # errors, will be silently ignored. WEIRD! + #sys.stderr = NullDevice # silence errors + + user_globals = {"__name__" : "__main__", + "__builtins__" : user_builtins, + "__user_stdout__" : user_stdout, + # sentinel value for frames deriving from a top-level module + "__OPT_toplevel__": True} + + if custom_globals: + user_globals.update(custom_globals) + + try: + # enforce resource limits RIGHT BEFORE running script_str + + # set ~200MB virtual memory limit AND a 5-second CPU time + # limit (tuned for Webfaction shared hosting) to protect against + # memory bombs such as: + # x = 2 + # while True: x = x*x + if resource_module_loaded and (not self.disable_security_checks): + resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) + resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) + + # protect against unauthorized filesystem accesses ... + resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed + + # VERY WEIRD. If you activate this resource limitation, it + # ends up generating an EMPTY trace for the following program: + # "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n" + # (at least on my Webfaction hosting with Python 2.7) + #resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) + + # The posix module is a built-in and has a ton of OS access + # facilities ... if you delete those functions from + # sys.modules['posix'], it seems like they're gone EVEN IF + # someone else imports posix in a roundabout way. Of course, + # I don't know how foolproof this scheme is, though. + # (It's not sufficient to just "del sys.modules['posix']"; + # it can just be reimported without accessing an external + # file and tripping RLIMIT_NOFILE, since the posix module + # is baked into the python executable, ergh. Actually DON'T + # "del sys.modules['posix']", since re-importing it will + # refresh all of the attributes. ergh^2) + for a in dir(sys.modules['posix']): + delattr(sys.modules['posix'], a) + # do the same with os + for a in dir(sys.modules['os']): + # 'path' is needed for __restricted_import__ to work + # and 'stat' is needed for some errors to be reported properly + if a not in ('path', 'stat'): + delattr(sys.modules['os'], a) + # ppl can dig up trashed objects with gc.get_objects() + import gc + for a in dir(sys.modules['gc']): + delattr(sys.modules['gc'], a) + del sys.modules['gc'] + + # sys.modules contains an in-memory cache of already-loaded + # modules, so if you delete modules from here, they will + # need to be re-loaded from the filesystem. + # + # Thus, as an extra precaution, remove these modules so that + # they can't be re-imported without opening a new file, + # which is disallowed by resource.RLIMIT_NOFILE + # + # Of course, this isn't a foolproof solution by any means, + # and it might lead to UNEXPECTED FAILURES later in execution. + del sys.modules['os'] + del sys.modules['os.path'] + del sys.modules['sys'] + + self.run(script_str, user_globals, user_globals) + # sys.exit ... + except SystemExit: + #sys.exit(0) + raise bdb.BdbQuit + except: + if DEBUG: + traceback.print_exc() + + trace_entry = dict(event='uncaught_exception') + + (exc_type, exc_val, exc_tb) = sys.exc_info() + if hasattr(exc_val, 'lineno'): + trace_entry['line'] = exc_val.lineno + if hasattr(exc_val, 'offset'): + trace_entry['offset'] = exc_val.offset + + trace_entry['exception_msg'] = type(exc_val).__name__ + ": " + str(exc_val) + + # SUPER SUBTLE! if ANY exception has already been recorded by + # the program, then DON'T record it again as an uncaught_exception. + # This looks kinda weird since the exact exception message doesn't + # need to match up, but in practice, there should be at most only + # ONE exception per trace. + already_caught = False + for e in self.trace: + if e['event'] == 'exception': + already_caught = True + break + + if not already_caught: + if not self.done: + self.trace.append(trace_entry) + + raise bdb.BdbQuit # need to forceably STOP execution + + + def force_terminate(self): + #self.finalize() + raise bdb.BdbQuit # need to forceably STOP execution + + + def finalize(self): + sys.stdout = self.GAE_STDOUT # very important! + sys.stderr = self.ORIGINAL_STDERR + + assert len(self.trace) <= (MAX_EXECUTED_LINES + 1) + + # don't do this anymore ... + ''' + # filter all entries after 'return' from '', since they + # seem extraneous: + res = [] + for e in self.trace: + res.append(e) + if e['event'] == 'return' and e['func_name'] == '': + break + ''' + + res = self.trace + + # if the SECOND to last entry is an 'exception' + # and the last entry is return from , then axe the last + # entry, for aesthetic reasons :) + if len(res) >= 2 and \ + res[-2]['event'] == 'exception' and \ + res[-1]['event'] == 'return' and res[-1]['func_name'] == '': + res.pop() + + self.trace = res + + return self.finalizer_func(self.executed_script, self.trace) + + +import json + +# the MAIN meaty function!!! +def exec_script_str(script_str, raw_input_lst_json, options_json, finalizer_func): + options = json.loads(options_json) + + py_crazy_mode = ('py_crazy_mode' in options and options['py_crazy_mode']) + + logger = PGLogger(options['cumulative_mode'], options['heap_primitives'], options['show_only_outputs'], finalizer_func, + crazy_mode=py_crazy_mode) + + # TODO: refactor these NOT to be globals + global input_string_queue + input_string_queue = [] + if raw_input_lst_json: + # TODO: if we want to support unicode, remove str() cast + input_string_queue = [str(e) for e in json.loads(raw_input_lst_json)] + + global __html__, __css__, __js__ + __html__, __css__, __js__ = None, None, None + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + logger.finalize() + + +# disables security check and returns the result of finalizer_func +# WARNING: ONLY RUN THIS LOCALLY and never over the web, since +# security checks are disabled +def exec_script_str_local(script_str, raw_input_lst_json, cumulative_mode, heap_primitives, finalizer_func): + # TODO: add py_crazy_mode option here too ... + logger = PGLogger(cumulative_mode, heap_primitives, False, finalizer_func, disable_security_checks=True) + + # TODO: refactor these NOT to be globals + global input_string_queue + input_string_queue = [] + if raw_input_lst_json: + # TODO: if we want to support unicode, remove str() cast + input_string_queue = [str(e) for e in json.loads(raw_input_lst_json)] + + global __html__, __css__, __js__ + __html__, __css__, __js__ = None, None, None + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + return logger.finalize() + + +def exec_str_with_user_ns(script_str, user_ns, finalizer_func): + logger = PGLogger(False, False, False, finalizer_func, disable_security_checks=True) + + global __html__, __css__, __js__ + __html__, __css__, __js__ = None, None, None + + try: + logger._runscript(script_str, user_ns) + except bdb.BdbQuit: + pass + finally: + return logger.finalize() + diff --git a/v3/pythontutor.py b/v3/pythontutor.py new file mode 100644 index 000000000..d914b9c26 --- /dev/null +++ b/v3/pythontutor.py @@ -0,0 +1,88 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# TODO: if we want to enable concurrent requests, then make sure this is threadsafe (e.g., no mutable globals) +# then add this string to app.yaml: 'threadsafe: true' + +import webapp2 +import pg_logger +import json +import jinja2, os +import sys + + +# TODO: this croaks for some reason ... +TEST_STR = "import os\nos.chdir('/')" + + +JINJA_ENVIRONMENT = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__))) + + +class TutorPage(webapp2.RequestHandler): + + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('visualize.html') + self.response.out.write(template.render()) + + +class IframeEmbedPage(webapp2.RequestHandler): + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('iframe-embed.html') + self.response.out.write(template.render()) + + +class LessonPage(webapp2.RequestHandler): + + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('lesson.html') + self.response.out.write(template.render()) + + +class ExecScript(webapp2.RequestHandler): + + def json_finalizer(self, input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr + self.response.out.write(json_output) + + def get(self): + self.response.headers['Content-Type'] = 'application/json' + self.response.headers['Cache-Control'] = 'no-cache' + + pg_logger.exec_script_str(self.request.get('user_script'), + self.request.get('raw_input_json'), + self.request.get('options_json'), + self.json_finalizer) + + +app = webapp2.WSGIApplication([('/', TutorPage), + ('/iframe-embed.html', IframeEmbedPage), + ('/lesson.html', LessonPage), + ('/exec', ExecScript)], + debug=True) + diff --git a/v3/relative-positioning-embedding-demo/embedding-demo.html b/v3/relative-positioning-embedding-demo/embedding-demo.html new file mode 100644 index 000000000..835675db7 --- /dev/null +++ b/v3/relative-positioning-embedding-demo/embedding-demo.html @@ -0,0 +1,43 @@ + + + + + Online Python Tutor embedding demo + + + + + + + + + + + + + + + + + + + + + + + +

      Recursive list sum (from pythontutor.com home page):

      + +
      + + + diff --git a/v3/relative-positioning-embedding-demo/embedding-demo.js b/v3/relative-positioning-embedding-demo/embedding-demo.js new file mode 100644 index 000000000..79ca03635 --- /dev/null +++ b/v3/relative-positioning-embedding-demo/embedding-demo.js @@ -0,0 +1,19 @@ +// To embed Online Python Tutor visualizations into embedding-demo.html ... + +// 1. Run generate_json_trace.py to generate execution traces as JavaScript variables. +// (WARNING: The following lines are VERY LONG.) + +// Run: +// python generate_json_trace.py --create_jsvar=listSumTrace tests/backend-tests/list_sum.txt +// and copy-and-paste the output line into here: +var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + +// 2. When the HTML document finishes loading, populate the three divs +// (listSumDiv, hanoiDiv, happyDiv) with the visualizations +// corresponding to the respective traces. +$(document).ready(function() { + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: true, + redrawAllConnectorsOnHeightChange: true, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); +}); diff --git a/v3/screenshot-renderer/README.md b/v3/screenshot-renderer/README.md new file mode 100644 index 000000000..f867a4711 --- /dev/null +++ b/v3/screenshot-renderer/README.md @@ -0,0 +1,27 @@ +# Render static screenshots of Online Python Tutor visualizations + +Nov 2013: I've written a [script](render-opt-screenshots.js) that uses +[PhantomJS](http://phantomjs.org/) to create screenshots of Online Python Tutor +data structure visualizations as `.png` files. +These files can be included in a textbook or online tutorial. + +To run this script, first [install PhantomJS](http://phantomjs.org/download.html) and then run: + + phantomjs render-opt-screenshots.js test.py + +Doing so will pass `test.py` to Online Python Tutor (which requires online connectivity) +and render the state at each step `i` as a file named `test.py.step..png`. + +This example run generates 23 files, since there are 23 total execution steps. Here are some example files. + +Step 11 (`sample-screenshots/test.py.step.11.png`): + +![Step 11](sample-screenshots/test.py.step.11.png) + +Step 12 (`sample-screenshots/test.py.step.12.png`) + +![Step 12](sample-screenshots/test.py.step.12.png) + +Step 13 (`sample-screenshots/test.py.step.13.png`) + +![Step 13](sample-screenshots/test.py.step.13.png) diff --git a/v3/screenshot-renderer/render-opt-screenshots.js b/v3/screenshot-renderer/render-opt-screenshots.js new file mode 100644 index 000000000..ba28ce1dc --- /dev/null +++ b/v3/screenshot-renderer/render-opt-screenshots.js @@ -0,0 +1,90 @@ +// Uses PhantomJS (phantomjs.org) to call Online Python Tutor to +// visualize and render screenshots of a Python file as .png images + +// Created by Philip Guo on 2013-11-23 + +// TODO: experiment with PDF rendering by calling page.render() with a +// .pdf file extension. We might need to mess around with viewport and +// page sizes. + +var DEBUG = true; + +var page = require('webpage').create(); +var system = require('system'); +var fs = require('fs'); + +if (system.args.length < 2) { + console.log('\nUsage:'); + console.log('phantomjs render-opt-screenshots.js [custom server name] [custom HTML file] [custom option string]'); + console.log('\nVisualizes execution of a Python file at pythontutor.com and renders'); + console.log('the state diagram at each step i as .step.$i.png'); + phantom.exit(1); +} + +var fn = system.args[1]; +var basename = fn.split(/[\\/]/).pop(); + +var server, html, option_str; +if (system.args.length == 2) { + // default options + server = 'www.pythontutor.com'; + html = 'visualize.html'; + option_str = 'cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&py=2'; +} +else { + server = system.args[2]; + html = system.args[3] + option_str = system.args[4]; + if (!option_str) { + option_str = ''; // to make string concatenation work properly + } +} + +var pythonScript = fs.open(fn, 'r').read(); + +if (DEBUG) { + console.log('Visualizing ...\n'); + console.log(pythonScript); + console.log('--- please wait ---'); +} + +var scriptEncoded = encodeURIComponent(pythonScript); + +// construct a URL with the script and options: +var url = 'http://' + server + '/' + html + '#code=' + scriptEncoded + + '&mode=display&showOnlyOutputs=false&' + option_str; + +page.open(url, function () { + // impose a slight delay to make sure the page loads completely before working + window.setTimeout(function () { + + // hide extraneous components and resize + page.evaluate(function() { + $("#experimentalHeader").hide(); + $("#footer").hide(); + $("#vizLayoutTdFirst").hide(); + $('#pyOutputPane').width($('table.visualizer').width()); + }); + + // grab maximum instruction from the page itself + var maxInstr = page.evaluate(function() { + return myVisualizer.curTrace.length - 1; + }); + + // ignore step 0 since there's nothing interesting to render there + for (var i=1; i <= maxInstr; i++) { + page.evaluate(function(i) { + myVisualizer.curInstr = i; + myVisualizer.updateOutput(); + }, i /* pass i in here */); + var outfn = basename + '.step.' + (i+1) + '.png'; + page.render(outfn); + if (DEBUG) { + console.log('Rendered step ' + (i+1) + ' / ' + (maxInstr+1), '\t' + outfn); + } + } + + phantom.exit() + + }, 1000); +}); diff --git a/v3/screenshot-renderer/sample-screenshots/test.py.step.11.png b/v3/screenshot-renderer/sample-screenshots/test.py.step.11.png new file mode 100644 index 000000000..cfeccf35b Binary files /dev/null and b/v3/screenshot-renderer/sample-screenshots/test.py.step.11.png differ diff --git a/v3/screenshot-renderer/sample-screenshots/test.py.step.12.png b/v3/screenshot-renderer/sample-screenshots/test.py.step.12.png new file mode 100644 index 000000000..658fb0759 Binary files /dev/null and b/v3/screenshot-renderer/sample-screenshots/test.py.step.12.png differ diff --git a/v3/screenshot-renderer/sample-screenshots/test.py.step.13.png b/v3/screenshot-renderer/sample-screenshots/test.py.step.13.png new file mode 100644 index 000000000..d6df58cc4 Binary files /dev/null and b/v3/screenshot-renderer/sample-screenshots/test.py.step.13.png differ diff --git a/v3/screenshot-renderer/test.py b/v3/screenshot-renderer/test.py new file mode 100644 index 000000000..9098319c1 --- /dev/null +++ b/v3/screenshot-renderer/test.py @@ -0,0 +1,23 @@ +x = [1, 2, 3] +y = [4, 5, 6] +z = y +y = x +x = z + +x = [1, 2, 3] # a different [1, 2, 3] list! +y = x +x.append(4) +y.append(5) +z = [1, 2, 3, 4, 5] # a different list! +x.append(6) +y = "hello" + + +def foo(lst): + lst.append("hello") + bar(lst) + +def bar(myLst): + print(myLst) + +foo(x) diff --git a/v3/selection_sort_watch.py b/v3/selection_sort_watch.py new file mode 100644 index 000000000..622f949ed --- /dev/null +++ b/v3/selection_sort_watch.py @@ -0,0 +1,15 @@ +# created by Peter Norvig +from watch_module import watchfn, watchedlist + +# The decorator here says that the 0th positional argument should be a list; +# we will watch it, and the locals named i, mini, and min_index +@watchfn((watchedlist, 'i mini min_index')) +def selection_sort(A): + for i in range(len(A)): #break + mini = min(A[i:]) + min_index = A[i:].index(mini) + i + if i != min_index: + A[min_index], A[i] = A[i], A[min_index] + return A + +print(selection_sort([3, 5, 2, 1, 8, 5, 9])) diff --git a/v3/simple_sandbox.py b/v3/simple_sandbox.py new file mode 100644 index 000000000..e5752c0e3 --- /dev/null +++ b/v3/simple_sandbox.py @@ -0,0 +1,154 @@ +# This is a SUPER simple sandbox, with code copied from pg_logger.py +# It's not meant to be actually secure, so ALWAYS practice defense in +# depth and use it alongside more heavyweight OS-level sandboxing using, +# say, Linux containers, and in conjunction with other sandboxes like: +# https://github.com/cemc/safeexec +# +# tested so far on Linux 2.6.32 (x86-64) and Mac OS X 10.8 +# +# Philip Guo (philip@pgbovine.net) + +import bdb +import sys +import traceback +import types + +# TODO: use the 'six' package to smooth out Py2 and Py3 differences +is_python3 = (sys.version_info[0] == 3) + +if is_python3: + import io as cStringIO +else: + import cStringIO + + +#DEBUG = False +DEBUG = True + + +# simple sandboxing scheme: +# +# - use resource.setrlimit to deprive this process of ANY file descriptors +# (which will cause file read/write and subprocess shell launches to fail) +# - restrict user builtins and module imports +# (beware that this is NOT foolproof at all ... there are known flaws!) +# +# ALWAYS use defense-in-depth and don't just rely on these simple mechanisms +import resource + + +# whitelist of module imports +ALLOWED_MODULE_IMPORTS = ('doctest',) + +# PREEMPTIVELY import all of these modules, so that when the user's +# script imports them, it won't try to do a file read (since they've +# already been imported and cached in memory). Remember that when +# the user's code runs, resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) +# will already be in effect, so no more files can be opened. +# +# NB: All modules in CUSTOM_MODULE_IMPORTS will be imported, warts and +# all, so they better work on Python 2 and 3! +for m in ALLOWED_MODULE_IMPORTS: + __import__(m) + + +# there's no point in banning builtins since malicious users can +# circumvent those anyways + + +class SandboxExecutor(bdb.Bdb): + def __init__(self, finalizer_func): + bdb.Bdb.__init__(self) + self.ORIGINAL_STDOUT = sys.stdout + self.ORIGINAL_STDERR = sys.stderr + self.executed_script = None # Python script to be executed! + + # a function that takes the output trace as a parameter and + # processes it + self.finalizer_func = finalizer_func + + + def _runscript(self, script_str): + self.executed_script = script_str + + self.user_stdout = cStringIO.StringIO() + self.user_stderr = cStringIO.StringIO() + + sys.stdout = self.user_stdout + sys.stderr = self.user_stderr + + try: + # enforce resource limits RIGHT BEFORE running script_str + + # set ~200MB virtual memory limit AND a 5-second CPU time + # limit (tuned for Webfaction shared hosting) to protect against + # memory bombs such as: + # x = 2 + # while True: x = x*x + resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) + resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) + + # protect against unauthorized filesystem accesses ... + resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed + + # VERY WEIRD. If you activate this resource limitation, it + # ends up generating an EMPTY trace for the following program: + # "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n" + # (at least on my Webfaction hosting with Python 2.7) + #resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) + + # sys.modules contains an in-memory cache of already-loaded + # modules, so if you delete modules from here, they will + # need to be re-loaded from the filesystem. + # + # Thus, as an extra precaution, remove these modules so that + # they can't be re-imported without opening a new file, + # which is disallowed by resource.RLIMIT_NOFILE + # + # Of course, this isn't a foolproof solution by any means, + # and it might lead to UNEXPECTED FAILURES later in execution. + del sys.modules['os'] + del sys.modules['os.path'] + del sys.modules['sys'] + + # ... here we go! + self.run(script_str) + # sys.exit ... + except SystemExit: + raise bdb.BdbQuit + except: + if DEBUG: + traceback.print_exc() + raise bdb.BdbQuit # need to forceably STOP execution + + + def finalize(self): + sys.stdout = self.ORIGINAL_STDOUT + sys.stderr = self.ORIGINAL_STDERR + return self.finalizer_func(self) + + +def print_finalizer(executor): + #print 'DONE:' + #print executor.executed_script + print('stdout:') + print(executor.user_stdout.getvalue()) + print('stderr:') + print(executor.user_stderr.getvalue()) + + +# the MAIN meaty function!!! +def exec_str(script_str, finalizer): + logger = SandboxExecutor(finalizer) + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + return logger.finalize() + + +if __name__ == "__main__": + script = open(sys.argv[1]).read() + exec_str(script, print_finalizer) diff --git a/v3/submit_matrix_problem.py b/v3/submit_matrix_problem.py new file mode 100644 index 000000000..81d7f757d --- /dev/null +++ b/v3/submit_matrix_problem.py @@ -0,0 +1,24 @@ +#!/usr/bin/python + +import cgi +import urllib +import urllib2 + +#import cgitb +#cgitb.enable() + +form = cgi.FieldStorage() +user_code = form['submitted_code'].value +prob_name = form['problem_name'].value + +# run tests on EC2 +url = 'http://ec2-107-20-94-197.compute-1.amazonaws.com/cgi-bin/test_matrix_code.py' +values = {'user_script' : user_code, 'problem_name': prob_name} + +data = urllib.urlencode(values) +req = urllib2.Request(url, data) +response = urllib2.urlopen(req) +the_page = response.read() + +print("Content-type: text/plain; charset=iso-8859-1\n") +print(the_page) diff --git a/v3/support-and-privacy.html b/v3/support-and-privacy.html new file mode 100644 index 000000000..619d42dcd --- /dev/null +++ b/v3/support-and-privacy.html @@ -0,0 +1,98 @@ + + + + + + + Online Python Tutor - Visualize program execution + + + + + + + + + +
      + +
      + +

      Online Python Tutor – support and privacy document

      + +

      +Online Python Tutor supports +Python 2.7 and 3.3 with limited module +imports and no file I/O. +The following modules may be imported: +bisect, +collections, +datetime, +functools, +heapq, +itertools, +json, +math, +operator, +random, +re, +string +

      + +
      + +

      Support

      + +

      Have a question? Maybe the FAQ +or other documentation +can help. Or check out its code at GitHub.

      + +

      Email Philip Guo at philip@pgbovine.net for all support questions.

      + +
      + +

      Privacy

      + +

      By using Online Python Tutor, your visualized code, options, and IP +address are logged on our server and may be analyzed for research +purposes. Nearly all Web services collect this basic information from +users. However, Online Python Tutor does not collect any personal +information, cookies, or session state from users.

      + +

      +Copyright © 2010-2014 Philip Guo. All rights reserved. +

      + +
      + + + diff --git a/v3/survey.py b/v3/survey.py new file mode 100755 index 000000000..9f9af31f4 --- /dev/null +++ b/v3/survey.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python + +# make this a dummy file for now +print("Content-type: text/plain; charset=iso-8859-1\n") diff --git a/v3/tests/backend-tests/breakpoints.golden b/v3/tests/backend-tests/breakpoints.golden new file mode 100644 index 000000000..d7929e839 --- /dev/null +++ b/v3/tests/backend-tests/breakpoints.golden @@ -0,0 +1,1392 @@ +{ + "code": "# when '#break' is the last string in a line, then stop at only those lines\n\nx = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4) #break\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list! #break\nx.append(6)\ny.append(7)\ny = \"hello\" #break\n\n\ndef foo(lst): #break\n lst.append(\"hello\") #break\n bar(lst)\n\ndef bar(myLst):\n print(myLst) #break\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/breakpoints.golden_py3 b/v3/tests/backend-tests/breakpoints.golden_py3 new file mode 100644 index 000000000..0d936f878 --- /dev/null +++ b/v3/tests/backend-tests/breakpoints.golden_py3 @@ -0,0 +1,1392 @@ +{ + "code": "# when '#break' is the last string in a line, then stop at only those lines\n\nx = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4) #break\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list! #break\nx.append(6)\ny.append(7)\ny = \"hello\" #break\n\n\ndef foo(lst): #break\n lst.append(\"hello\") #break\n bar(lst)\n\ndef bar(myLst):\n print(myLst) #break\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/breakpoints.txt b/v3/tests/backend-tests/breakpoints.txt new file mode 100644 index 000000000..338e45ad1 --- /dev/null +++ b/v3/tests/backend-tests/breakpoints.txt @@ -0,0 +1,27 @@ +# when '#break' is the last string in a line, then stop at only those lines + +x = [1, 2, 3] +y = [4, 5, 6] +z = y +y = x +x = z + +x = [1, 2, 3] # a different [1, 2, 3] list! +y = x +x.append(4) #break +y.append(5) +z = [1, 2, 3, 4, 5] # a different list! #break +x.append(6) +y.append(7) +y = "hello" #break + + +def foo(lst): #break + lst.append("hello") #break + bar(lst) + +def bar(myLst): + print(myLst) #break + +foo(x) +foo(z) diff --git a/v3/tests/backend-tests/callback-test.golden b/v3/tests/backend-tests/callback-test.golden new file mode 100644 index 000000000..5cd262b52 --- /dev/null +++ b/v3/tests/backend-tests/callback-test.golden @@ -0,0 +1,518 @@ +{ + "code": "# Tests to make sure that OPT tracks execution from user code (foo) to a\n# function in an external module (callback_module.callback_func) and\n# then back out to user code (bar). If all goes well, then both foo and\n# bar will be displayed on the stack. Ideally\n# callback_module.callback_func should also be on the stack, but since\n# OPT doesn't trace external code, it simply ignores that stack entry.\n\n# The incorrect behavior is NOT to trace inside of bar.\n\n\nimport callback_module\n\ndef foo():\n callback_module.callback_func(bar)\n\ndef bar():\n print(\"I'm in a bar!!!\")\n \nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "callback_module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 19, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/callback-test.golden_py3 b/v3/tests/backend-tests/callback-test.golden_py3 new file mode 100644 index 000000000..b0321dc55 --- /dev/null +++ b/v3/tests/backend-tests/callback-test.golden_py3 @@ -0,0 +1,518 @@ +{ + "code": "# Tests to make sure that OPT tracks execution from user code (foo) to a\n# function in an external module (callback_module.callback_func) and\n# then back out to user code (bar). If all goes well, then both foo and\n# bar will be displayed on the stack. Ideally\n# callback_module.callback_func should also be on the stack, but since\n# OPT doesn't trace external code, it simply ignores that stack entry.\n\n# The incorrect behavior is NOT to trace inside of bar.\n\n\nimport callback_module\n\ndef foo():\n callback_module.callback_func(bar)\n\ndef bar():\n print(\"I'm in a bar!!!\")\n \nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "callback_module", + "foo", + "bar" + ], + "stdout": "I'm in a bar!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "callback_module": [ + "REF", + 1 + ], + "bar": [ + "REF", + 3 + ], + "foo": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "foo()", + null + ], + "3": [ + "FUNCTION", + "bar()", + null + ] + }, + "line": 19, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/callback-test.txt b/v3/tests/backend-tests/callback-test.txt new file mode 100644 index 000000000..5faf076ff --- /dev/null +++ b/v3/tests/backend-tests/callback-test.txt @@ -0,0 +1,19 @@ +# Tests to make sure that OPT tracks execution from user code (foo) to a +# function in an external module (callback_module.callback_func) and +# then back out to user code (bar). If all goes well, then both foo and +# bar will be displayed on the stack. Ideally +# callback_module.callback_func should also be on the stack, but since +# OPT doesn't trace external code, it simply ignores that stack entry. + +# The incorrect behavior is NOT to trace inside of bar. + + +import callback_module + +def foo(): + callback_module.callback_func(bar) + +def bar(): + print("I'm in a bar!!!") + +foo() diff --git a/v3/tests/backend-tests/caught_exception_1.golden b/v3/tests/backend-tests/caught_exception_1.golden new file mode 100644 index 000000000..2418eb530 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_1.golden @@ -0,0 +1,66 @@ +{ + "code": "try:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_1.golden_py3 b/v3/tests/backend-tests/caught_exception_1.golden_py3 new file mode 100644 index 000000000..b9d796a10 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_1.golden_py3 @@ -0,0 +1,66 @@ +{ + "code": "try:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_1.txt b/v3/tests/backend-tests/caught_exception_1.txt new file mode 100644 index 000000000..ad24ed88b --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_1.txt @@ -0,0 +1,5 @@ +try: + x = 1 / 0 +except: + print("DIVIDE BY ZERO") + diff --git a/v3/tests/backend-tests/caught_exception_2.golden b/v3/tests/backend-tests/caught_exception_2.golden new file mode 100644 index 000000000..a1452b2f6 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_2.golden @@ -0,0 +1,77 @@ +{ + "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n\n# uncaught:\nprint(y)\n\nprint(\"should not reach here\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_2.golden_py3 b/v3/tests/backend-tests/caught_exception_2.golden_py3 new file mode 100644 index 000000000..c0fb9edc3 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_2.golden_py3 @@ -0,0 +1,77 @@ +{ + "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n\n# uncaught:\nprint(y)\n\nprint(\"should not reach here\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_2.txt b/v3/tests/backend-tests/caught_exception_2.txt new file mode 100644 index 000000000..66768e16c --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_2.txt @@ -0,0 +1,12 @@ +# caught exception: +try: + x = 1 / 0 +except: + print("DIVIDE BY ZERO") + + +# uncaught: +print(y) + +print("should not reach here") + diff --git a/v3/tests/backend-tests/circ_ref.golden b/v3/tests/backend-tests/circ_ref.golden new file mode 100644 index 000000000..ea8bc5c65 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref.golden @@ -0,0 +1,65 @@ +{ + "code": "# true circular reference\n\nx = [1, 2]\nx.append(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref.golden_py3 b/v3/tests/backend-tests/circ_ref.golden_py3 new file mode 100644 index 000000000..ea8bc5c65 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref.golden_py3 @@ -0,0 +1,65 @@ +{ + "code": "# true circular reference\n\nx = [1, 2]\nx.append(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref.txt b/v3/tests/backend-tests/circ_ref.txt new file mode 100644 index 000000000..7af6d5e6d --- /dev/null +++ b/v3/tests/backend-tests/circ_ref.txt @@ -0,0 +1,5 @@ +# true circular reference + +x = [1, 2] +x.append(x) + diff --git a/v3/tests/backend-tests/circ_ref_2.golden b/v3/tests/backend-tests/circ_ref_2.golden new file mode 100644 index 000000000..c1fb56894 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_2.golden @@ -0,0 +1,116 @@ +{ + "code": "# true indirect circular reference\n\nx = [1, 2]\ny = [3, 4, x]\nx.append(y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_2.golden_py3 b/v3/tests/backend-tests/circ_ref_2.golden_py3 new file mode 100644 index 000000000..c1fb56894 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_2.golden_py3 @@ -0,0 +1,116 @@ +{ + "code": "# true indirect circular reference\n\nx = [1, 2]\ny = [3, 4, x]\nx.append(y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_2.txt b/v3/tests/backend-tests/circ_ref_2.txt new file mode 100644 index 000000000..49502c869 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_2.txt @@ -0,0 +1,6 @@ +# true indirect circular reference + +x = [1, 2] +y = [3, 4, x] +x.append(y) + diff --git a/v3/tests/backend-tests/circ_ref_fake.golden b/v3/tests/backend-tests/circ_ref_fake.golden new file mode 100644 index 000000000..11e8e7d50 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_fake.golden @@ -0,0 +1,168 @@ +{ + "code": "# not a true circular reference\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = (a, b, c)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_fake.golden_py3 b/v3/tests/backend-tests/circ_ref_fake.golden_py3 new file mode 100644 index 000000000..11e8e7d50 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_fake.golden_py3 @@ -0,0 +1,168 @@ +{ + "code": "# not a true circular reference\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = (a, b, c)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_fake.txt b/v3/tests/backend-tests/circ_ref_fake.txt new file mode 100644 index 000000000..3bbcc94f2 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_fake.txt @@ -0,0 +1,7 @@ +# not a true circular reference + +a = [10, 20, 30] +b = a +c = [10, 20, 30] +d = (a, b, c) + diff --git a/v3/tests/backend-tests/class_test.golden b/v3/tests/backend-tests/class_test.golden new file mode 100644 index 000000000..5266c9782 --- /dev/null +++ b/v3/tests/backend-tests/class_test.golden @@ -0,0 +1,1444 @@ +{ + "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint(p)\np2 = Point(3, -4)\nprint(p2)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "(1, 2)", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": "(3, -4)", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n(3, -4)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test.golden_py3 b/v3/tests/backend-tests/class_test.golden_py3 new file mode 100644 index 000000000..5266c9782 --- /dev/null +++ b/v3/tests/backend-tests/class_test.golden_py3 @@ -0,0 +1,1444 @@ +{ + "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint(p)\np2 = Point(3, -4)\nprint(p2)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 4 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": "(1, 2)", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 5 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": "(3, -4)", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__str___f4", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n(3, -4)\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p2": [ + "REF", + 5 + ], + "p": [ + "REF", + 4 + ], + "Point": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + null + ], + "3": [ + "FUNCTION", + "__str__(self)", + null + ], + "4": [ + "INSTANCE_PPRINT", + "Point", + "(1, 2)" + ], + "5": [ + "INSTANCE_PPRINT", + "Point", + "(3, -4)" + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test.txt b/v3/tests/backend-tests/class_test.txt new file mode 100644 index 000000000..77d89420a --- /dev/null +++ b/v3/tests/backend-tests/class_test.txt @@ -0,0 +1,13 @@ +class Point: + def __init__(self, x, y): + self.x = x + self.y = y + + def __str__(self): + return "(%d, %d)" % (self.x, self.y) + +p = Point(1, 2) +print(p) +p2 = Point(3, -4) +print(p2) + diff --git a/v3/tests/backend-tests/class_test_2.golden b/v3/tests/backend-tests/class_test_2.golden new file mode 100644 index 000000000..83ed6755e --- /dev/null +++ b/v3/tests/backend-tests/class_test_2.golden @@ -0,0 +1,186 @@ +{ + "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint(o)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "<__main__.Outer instance at 0xADDR>\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_2.golden_py3 b/v3/tests/backend-tests/class_test_2.golden_py3 new file mode 100644 index 000000000..55293b1d5 --- /dev/null +++ b/v3/tests/backend-tests/class_test_2.golden_py3 @@ -0,0 +1,186 @@ +{ + "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint(o)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "<__main__.Outer object at 0xADDR>\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 1 + ], + "o": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Outer", + [] + ], + "2": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_2.txt b/v3/tests/backend-tests/class_test_2.txt new file mode 100644 index 000000000..c6532c1b1 --- /dev/null +++ b/v3/tests/backend-tests/class_test_2.txt @@ -0,0 +1,8 @@ +class Outer(): + pass + +o = Outer() +o.a = 5 +o.b = "Hi" +print(o) + diff --git a/v3/tests/backend-tests/class_test_3.golden b/v3/tests/backend-tests/class_test_3.golden new file mode 100644 index 000000000..314304c78 --- /dev/null +++ b/v3/tests/backend-tests/class_test_3.golden @@ -0,0 +1,470 @@ +{ + "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_3.golden_py3 b/v3/tests/backend-tests/class_test_3.golden_py3 new file mode 100644 index 000000000..314304c78 --- /dev/null +++ b/v3/tests/backend-tests/class_test_3.golden_py3 @@ -0,0 +1,470 @@ +{ + "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 1 + ], + "pat": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "2": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_3.txt b/v3/tests/backend-tests/class_test_3.txt new file mode 100644 index 000000000..55c604882 --- /dev/null +++ b/v3/tests/backend-tests/class_test_3.txt @@ -0,0 +1,16 @@ +class Staff601: + course = '6.01' + building = 34 + room = 501 + +pat = Staff601() +print(pat.course) + +pat.name = 'Pat' +pat.age = 60 +pat.role = 'Professor' + +print(pat.building) +pat.building = 32 +print(pat.building) + diff --git a/v3/tests/backend-tests/closure-shadow-same-name.golden b/v3/tests/backend-tests/closure-shadow-same-name.golden new file mode 100644 index 000000000..5f17e5c8b --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.golden @@ -0,0 +1,505 @@ +{ + "code": "# some of the params in f and g have identical names AND values,\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x, y)\n\nf(1, 2, 3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 b/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 new file mode 100644 index 000000000..5f17e5c8b --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 @@ -0,0 +1,505 @@ +{ + "code": "# some of the params in f and g have identical names AND values,\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x, y)\n\nf(1, 2, 3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/closure-shadow-same-name.txt b/v3/tests/backend-tests/closure-shadow-same-name.txt new file mode 100644 index 000000000..13d20e618 --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.txt @@ -0,0 +1,8 @@ +# some of the params in f and g have identical names AND values, +# so make sure they're all displayed properly +def f(x, y, z): + def g(x, y): + return x + return g(x, y) + +f(1, 2, 3) diff --git a/v3/tests/backend-tests/cmodule.golden b/v3/tests/backend-tests/cmodule.golden new file mode 100644 index 000000000..e29fbc456 --- /dev/null +++ b/v3/tests/backend-tests/cmodule.golden @@ -0,0 +1,37 @@ +{ + "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "datetime_CAPI" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime_CAPI": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "PyCapsule", + "" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cmodule.golden_py3 b/v3/tests/backend-tests/cmodule.golden_py3 new file mode 100644 index 000000000..562a7996a --- /dev/null +++ b/v3/tests/backend-tests/cmodule.golden_py3 @@ -0,0 +1,37 @@ +{ + "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "datetime_CAPI" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime_CAPI": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "PyCapsule" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cmodule.txt b/v3/tests/backend-tests/cmodule.txt new file mode 100644 index 000000000..53bb90850 --- /dev/null +++ b/v3/tests/backend-tests/cmodule.txt @@ -0,0 +1,3 @@ +# importing some C-ish module ... +# make sure this doesn't crash in Python 2 or 3 +from datetime import datetime_CAPI diff --git a/v3/tests/backend-tests/cs61a-multi-lambdas.golden b/v3/tests/backend-tests/cs61a-multi-lambdas.golden new file mode 100644 index 000000000..a488fda55 --- /dev/null +++ b/v3/tests/backend-tests/cs61a-multi-lambdas.golden @@ -0,0 +1,2330 @@ +{ + "code": "# from Berkeley cs61a\ndef f(x):\n return lambda x: lambda x: x+x+x\n\nh = lambda x: x+x+x # identical code to line 3\n\ng = f(3)\ng(4)(6)\n\nf(1)(2)(5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 18, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 15, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cs61a-multi-lambdas.golden_py3 b/v3/tests/backend-tests/cs61a-multi-lambdas.golden_py3 new file mode 100644 index 000000000..a488fda55 --- /dev/null +++ b/v3/tests/backend-tests/cs61a-multi-lambdas.golden_py3 @@ -0,0 +1,2330 @@ +{ + "code": "# from Berkeley cs61a\ndef f(x):\n return lambda x: lambda x: x+x+x\n\nh = lambda x: x+x+x # identical code to line 3\n\ng = f(3)\ng(4)(6)\n\nf(1)(2)(5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 18, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 15, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 5, + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f4_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 2 + ], + "g": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 2 + ], + "5": [ + "FUNCTION", + "(x) ", + 4 + ], + "6": [ + "FUNCTION", + "(x) ", + 5 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cs61a-multi-lambdas.txt b/v3/tests/backend-tests/cs61a-multi-lambdas.txt new file mode 100644 index 000000000..973f35267 --- /dev/null +++ b/v3/tests/backend-tests/cs61a-multi-lambdas.txt @@ -0,0 +1,10 @@ +# from Berkeley cs61a +def f(x): + return lambda x: lambda x: x+x+x + +h = lambda x: x+x+x # identical code to line 3 + +g = f(3) +g(4)(6) + +f(1)(2)(5) diff --git a/v3/tests/backend-tests/data_test.golden b/v3/tests/backend-tests/data_test.golden new file mode 100644 index 000000000..68e3251eb --- /dev/null +++ b/v3/tests/backend-tests/data_test.golden @@ -0,0 +1,213 @@ +{ + "code": "x = ('hello', 'world', 1, 2, 3, 'goodbye')\ny = list(x)\nz = set(x)\nw = {\"joe\" : 5, \"mindy\" : 6, \"jack\" : 7}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ], + "w": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ], + "4": [ + "DICT", + [ + "mindy", + 6 + ], + [ + "joe", + 5 + ], + [ + "jack", + 7 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/data_test.golden_py3 b/v3/tests/backend-tests/data_test.golden_py3 new file mode 100644 index 000000000..68e3251eb --- /dev/null +++ b/v3/tests/backend-tests/data_test.golden_py3 @@ -0,0 +1,213 @@ +{ + "code": "x = ('hello', 'world', 1, 2, 3, 'goodbye')\ny = list(x)\nz = set(x)\nw = {\"joe\" : 5, \"mindy\" : 6, \"jack\" : 7}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ], + "w": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ], + "4": [ + "DICT", + [ + "mindy", + 6 + ], + [ + "joe", + 5 + ], + [ + "jack", + 7 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/data_test.txt b/v3/tests/backend-tests/data_test.txt new file mode 100644 index 000000000..664717167 --- /dev/null +++ b/v3/tests/backend-tests/data_test.txt @@ -0,0 +1,4 @@ +x = ('hello', 'world', 1, 2, 3, 'goodbye') +y = list(x) +z = set(x) +w = {"joe" : 5, "mindy" : 6, "jack" : 7} diff --git a/v3/tests/backend-tests/dict_error.golden b/v3/tests/backend-tests/dict_error.golden new file mode 100644 index 000000000..1d65cbe41 --- /dev/null +++ b/v3/tests/backend-tests/dict_error.golden @@ -0,0 +1,207 @@ +{ + "code": "def foo():\n local_y[('tup', 'le')] = set([1, 2, 3])\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/dict_error.golden_py3 b/v3/tests/backend-tests/dict_error.golden_py3 new file mode 100644 index 000000000..1d65cbe41 --- /dev/null +++ b/v3/tests/backend-tests/dict_error.golden_py3 @@ -0,0 +1,207 @@ +{ + "code": "def foo():\n local_y[('tup', 'le')] = set([1, 2, 3])\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/dict_error.txt b/v3/tests/backend-tests/dict_error.txt new file mode 100644 index 000000000..fb6ed90ee --- /dev/null +++ b/v3/tests/backend-tests/dict_error.txt @@ -0,0 +1,4 @@ +def foo(): + local_y[('tup', 'le')] = set([1, 2, 3]) + +foo() diff --git a/v3/tests/backend-tests/dict_test.golden b/v3/tests/backend-tests/dict_test.golden new file mode 100644 index 000000000..0c05ae2da --- /dev/null +++ b/v3/tests/backend-tests/dict_test.golden @@ -0,0 +1,730 @@ +{ + "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print(\"hello\", list(local_y.values()))\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "('hello', [set([1, 2, 3])])\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "('hello', [set([1, 2, 3])])\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/dict_test.golden_py3 b/v3/tests/backend-tests/dict_test.golden_py3 new file mode 100644 index 000000000..cb382cbf5 --- /dev/null +++ b/v3/tests/backend-tests/dict_test.golden_py3 @@ -0,0 +1,730 @@ +{ + "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print(\"hello\", list(local_y.values()))\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [{1, 2, 3}]\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [{1, 2, 3}]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/dict_test.txt b/v3/tests/backend-tests/dict_test.txt new file mode 100644 index 000000000..15294a473 --- /dev/null +++ b/v3/tests/backend-tests/dict_test.txt @@ -0,0 +1,10 @@ +x = {1 : 2} +x[('tup', 'le')] = set([1, 2, 3]) + +def foo(): + local_x = {1 : 2} + local_y = {} + local_y[('tup', 'le')] = set([1, 2, 3]) + print("hello", list(local_y.values())) + +foo() diff --git a/v3/tests/backend-tests/exec_test.golden b/v3/tests/backend-tests/exec_test.golden new file mode 100644 index 000000000..a6a43ad21 --- /dev/null +++ b/v3/tests/backend-tests/exec_test.golden @@ -0,0 +1,67 @@ +{ + "code": "exec(\"import os; os.system('echo security breach')\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ImportError: os not supported", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ImportError: os not supported", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/exec_test.golden_py3 b/v3/tests/backend-tests/exec_test.golden_py3 new file mode 100644 index 000000000..f8b44bb26 --- /dev/null +++ b/v3/tests/backend-tests/exec_test.golden_py3 @@ -0,0 +1,26 @@ +{ + "code": "exec(\"import os; os.system('echo security breach')\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "NameError: name 'exec' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/exec_test.txt b/v3/tests/backend-tests/exec_test.txt new file mode 100644 index 000000000..7c8c740c7 --- /dev/null +++ b/v3/tests/backend-tests/exec_test.txt @@ -0,0 +1 @@ +exec("import os; os.system('echo security breach')") diff --git a/v3/tests/backend-tests/func_exception.golden b/v3/tests/backend-tests/func_exception.golden new file mode 100644 index 000000000..08975e74f --- /dev/null +++ b/v3/tests/backend-tests/func_exception.golden @@ -0,0 +1,270 @@ +{ + "code": "def g(x,y):\n print(\"In g\")\n ans = x/y\n return ans\n \ng(5, 0)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/func_exception.golden_py3 b/v3/tests/backend-tests/func_exception.golden_py3 new file mode 100644 index 000000000..537097da9 --- /dev/null +++ b/v3/tests/backend-tests/func_exception.golden_py3 @@ -0,0 +1,270 @@ +{ + "code": "def g(x,y):\n print(\"In g\")\n ans = x/y\n return ans\n \ng(5, 0)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/func_exception.txt b/v3/tests/backend-tests/func_exception.txt new file mode 100644 index 000000000..991a8253d --- /dev/null +++ b/v3/tests/backend-tests/func_exception.txt @@ -0,0 +1,7 @@ +def g(x,y): + print("In g") + ans = x/y + return ans + +g(5, 0) + diff --git a/v3/tests/backend-tests/generator_test.golden b/v3/tests/backend-tests/generator_test.golden new file mode 100644 index 000000000..845c6114f --- /dev/null +++ b/v3/tests/backend-tests/generator_test.golden @@ -0,0 +1,100 @@ +{ + "code": "x = (e for e in range(10))\ny = x\nz = (e for e in range(10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/generator_test.golden_py3 b/v3/tests/backend-tests/generator_test.golden_py3 new file mode 100644 index 000000000..9a61882ef --- /dev/null +++ b/v3/tests/backend-tests/generator_test.golden_py3 @@ -0,0 +1,100 @@ +{ + "code": "x = (e for e in range(10))\ny = x\nz = (e for e in range(10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "generator" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/generator_test.txt b/v3/tests/backend-tests/generator_test.txt new file mode 100644 index 000000000..f17609e64 --- /dev/null +++ b/v3/tests/backend-tests/generator_test.txt @@ -0,0 +1,3 @@ +x = (e for e in range(10)) +y = x +z = (e for e in range(10)) diff --git a/v3/tests/backend-tests/generator_use_test.golden b/v3/tests/backend-tests/generator_use_test.golden new file mode 100644 index 000000000..34e21934f --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.golden @@ -0,0 +1,10982 @@ +{ + "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print(i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/generator_use_test.golden_py3 b/v3/tests/backend-tests/generator_use_test.golden_py3 new file mode 100644 index 000000000..5bb2c43a8 --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.golden_py3 @@ -0,0 +1,10772 @@ +{ + "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print(i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 85, + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "__return__": 87, + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "__return__": 89, + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "__return__": 91, + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "__return__": 93, + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "__return__": 95, + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "__return__": 97, + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 99 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/generator_use_test.txt b/v3/tests/backend-tests/generator_use_test.txt new file mode 100644 index 000000000..d4aee1010 --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.txt @@ -0,0 +1,9 @@ +def gen_odds(): + x = 1 + while True: + yield x + x += 2 + +for i in gen_odds(): + print(i) + diff --git a/v3/tests/backend-tests/import_error.golden b/v3/tests/backend-tests/import_error.golden new file mode 100644 index 000000000..96e9fa679 --- /dev/null +++ b/v3/tests/backend-tests/import_error.golden @@ -0,0 +1,26 @@ +{ + "code": "# should NOT allow for any imports\nimport os\n\nos.system(\"echo security breach\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ImportError: os not supported", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/import_error.golden_py3 b/v3/tests/backend-tests/import_error.golden_py3 new file mode 100644 index 000000000..96e9fa679 --- /dev/null +++ b/v3/tests/backend-tests/import_error.golden_py3 @@ -0,0 +1,26 @@ +{ + "code": "# should NOT allow for any imports\nimport os\n\nos.system(\"echo security breach\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ImportError: os not supported", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/import_error.txt b/v3/tests/backend-tests/import_error.txt new file mode 100644 index 000000000..028a74e54 --- /dev/null +++ b/v3/tests/backend-tests/import_error.txt @@ -0,0 +1,4 @@ +# should NOT allow for any imports +import os + +os.system("echo security breach") diff --git a/v3/tests/backend-tests/inf-nan.golden b/v3/tests/backend-tests/inf-nan.golden new file mode 100644 index 000000000..0ea44ee8b --- /dev/null +++ b/v3/tests/backend-tests/inf-nan.golden @@ -0,0 +1,81 @@ +{ + "code": "x = float('inf')\ny = float('-inf')\nz = float('nan')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ] + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "SPECIAL_FLOAT", + "-Infinity" + ], + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ] + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "SPECIAL_FLOAT", + "-Infinity" + ], + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ], + "z": [ + "SPECIAL_FLOAT", + "NaN" + ] + }, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/inf-nan.golden_py3 b/v3/tests/backend-tests/inf-nan.golden_py3 new file mode 100644 index 000000000..0ea44ee8b --- /dev/null +++ b/v3/tests/backend-tests/inf-nan.golden_py3 @@ -0,0 +1,81 @@ +{ + "code": "x = float('inf')\ny = float('-inf')\nz = float('nan')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ] + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "SPECIAL_FLOAT", + "-Infinity" + ], + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ] + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "SPECIAL_FLOAT", + "-Infinity" + ], + "x": [ + "SPECIAL_FLOAT", + "Infinity" + ], + "z": [ + "SPECIAL_FLOAT", + "NaN" + ] + }, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/inf-nan.txt b/v3/tests/backend-tests/inf-nan.txt new file mode 100644 index 000000000..ff814ed49 --- /dev/null +++ b/v3/tests/backend-tests/inf-nan.txt @@ -0,0 +1,3 @@ +x = float('inf') +y = float('-inf') +z = float('nan') diff --git a/v3/tests/backend-tests/infinite_loop.golden b/v3/tests/backend-tests/infinite_loop.golden new file mode 100644 index 000000000..217546644 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop.golden @@ -0,0 +1,7545 @@ +{ + "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop.golden_py3 b/v3/tests/backend-tests/infinite_loop.golden_py3 new file mode 100644 index 000000000..ed5d62820 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop.golden_py3 @@ -0,0 +1,7560 @@ +{ + "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961, + 4052739537881 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881, + 6557470319842 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842, + 10610209857723 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723, + 17167680177565 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565, + 27777890035288 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288, + 44945570212853 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853, + 72723460248141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141, + 117669030460994 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994, + 190392490709135 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135, + 308061521170129 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129, + 498454011879264 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264, + 806515533049393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393, + 1304969544928657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657, + 2111485077978050 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050, + 3416454622906707 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2111485077978050, + 3416454622906707 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop.txt b/v3/tests/backend-tests/infinite_loop.txt new file mode 100644 index 000000000..b480914bb --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop.txt @@ -0,0 +1,12 @@ +# Fibonacci!!! + +arr = [1, 1] + +print(arr[0]) + +while True: + print(arr[-1]) + tmp = sum(arr) + arr.append(tmp) + del arr[0] + diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.golden b/v3/tests/backend-tests/infinite_loop_one_liner.golden new file mode 100644 index 000000000..e28f84304 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop_one_liner.golden @@ -0,0 +1,3009 @@ +{ + "code": "while 1:\n print(\"hahahaha\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 b/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 new file mode 100644 index 000000000..e28f84304 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 @@ -0,0 +1,3009 @@ +{ + "code": "while 1:\n print(\"hahahaha\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.txt b/v3/tests/backend-tests/infinite_loop_one_liner.txt new file mode 100644 index 000000000..6bc80597f --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop_one_liner.txt @@ -0,0 +1,2 @@ +while 1: + print("hahahaha") diff --git a/v3/tests/backend-tests/john-compose.golden b/v3/tests/backend-tests/john-compose.golden new file mode 100644 index 000000000..e0c62d35f --- /dev/null +++ b/v3/tests/backend-tests/john-compose.golden @@ -0,0 +1,1262 @@ +{ + "code": "def compose1(f, g):\n return lambda x: f(g(x))\n\nadd_one_and_square = compose1(lambda x: x * x, lambda x: x + 1)\nresult = add_one_and_square(12)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 13, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 169, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 169, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ], + "result": 169 + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-compose.golden_py3 b/v3/tests/backend-tests/john-compose.golden_py3 new file mode 100644 index 000000000..e0c62d35f --- /dev/null +++ b/v3/tests/backend-tests/john-compose.golden_py3 @@ -0,0 +1,1262 @@ +{ + "code": "def compose1(f, g):\n return lambda x: f(g(x))\n\nadd_one_and_square = compose1(lambda x: x * x, lambda x: x + 1)\nresult = add_one_and_square(12)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 13, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 169, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 169, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ], + "result": 169 + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x) ", + null + ], + "3": [ + "FUNCTION", + "(x) ", + null + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-compose.txt b/v3/tests/backend-tests/john-compose.txt new file mode 100644 index 000000000..4b8767912 --- /dev/null +++ b/v3/tests/backend-tests/john-compose.txt @@ -0,0 +1,5 @@ +def compose1(f, g): + return lambda x: f(g(x)) + +add_one_and_square = compose1(lambda x: x * x, lambda x: x + 1) +result = add_one_and_square(12) diff --git a/v3/tests/backend-tests/john-import-test.golden b/v3/tests/backend-tests/john-import-test.golden new file mode 100644 index 000000000..add78fcb4 --- /dev/null +++ b/v3/tests/backend-tests/john-import-test.golden @@ -0,0 +1,282 @@ +{ + "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# causes some errors in regression tests, but fine in GAE ...\n#import random\n#import datetime\n#import functools\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "math" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ], + "2": [ + "module", + "operator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ], + "2": [ + "module", + "operator" + ], + "3": [ + "module", + "string" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ], + "2": [ + "module", + "operator" + ], + "3": [ + "module", + "string" + ], + "4": [ + "module", + "collections" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "re": [ + "REF", + 5 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ], + "2": [ + "module", + "operator" + ], + "3": [ + "module", + "string" + ], + "4": [ + "module", + "collections" + ], + "5": [ + "module", + "re" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re", + "json" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "string": [ + "REF", + 3 + ], + "re": [ + "REF", + 5 + ], + "json": [ + "REF", + 6 + ], + "collections": [ + "REF", + 4 + ], + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "math" + ], + "2": [ + "module", + "operator" + ], + "3": [ + "module", + "string" + ], + "4": [ + "module", + "collections" + ], + "5": [ + "module", + "re" + ], + "6": [ + "module", + "json" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-import-test.golden_py3 b/v3/tests/backend-tests/john-import-test.golden_py3 new file mode 100644 index 000000000..332fa4b5e --- /dev/null +++ b/v3/tests/backend-tests/john-import-test.golden_py3 @@ -0,0 +1,282 @@ +{ + "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# causes some errors in regression tests, but fine in GAE ...\n#import random\n#import datetime\n#import functools\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "math" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "re": [ + "REF", + 5 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ], + "5": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re", + "json" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "string": [ + "REF", + 3 + ], + "re": [ + "REF", + 5 + ], + "json": [ + "REF", + 6 + ], + "collections": [ + "REF", + 4 + ], + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ], + "5": [ + "INSTANCE", + "module" + ], + "6": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-import-test.txt b/v3/tests/backend-tests/john-import-test.txt new file mode 100644 index 000000000..fcb15f43f --- /dev/null +++ b/v3/tests/backend-tests/john-import-test.txt @@ -0,0 +1,11 @@ +import math +import operator +import string +import collections +import re +import json + +# causes some errors in regression tests, but fine in GAE ... +#import random +#import datetime +#import functools diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.golden b/v3/tests/backend-tests/john-lambda-lambda-mini.golden new file mode 100644 index 000000000..3f5b3cc1c --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.golden @@ -0,0 +1,817 @@ +{ + "code": "def a(b):\n a = b(3)\n a(100)\n\na(lambda a: (lambda b: a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 b/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 new file mode 100644 index 000000000..3f5b3cc1c --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 @@ -0,0 +1,817 @@ +{ + "code": "def a(b):\n a = b(3)\n a(100)\n\na(lambda a: (lambda b: a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "b", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.txt b/v3/tests/backend-tests/john-lambda-lambda-mini.txt new file mode 100644 index 000000000..bd8f4edc3 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.txt @@ -0,0 +1,5 @@ +def a(b): + a = b(3) + a(100) + +a(lambda a: (lambda b: a)) diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden b/v3/tests/backend-tests/john-lambda-lambda.golden new file mode 100644 index 000000000..724b87af2 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.golden @@ -0,0 +1,472 @@ +{ + "code": "# another gem from john denero ...\ndef a(b):\n a, b = b(3)\n\na(lambda a: (lambda b: a, a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden_py3 b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 new file mode 100644 index 000000000..724b87af2 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 @@ -0,0 +1,472 @@ +{ + "code": "# another gem from john denero ...\ndef a(b):\n a, b = b(3)\n\na(lambda a: (lambda b: a, a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a) ", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": " ", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": " _f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b) ", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda.txt b/v3/tests/backend-tests/john-lambda-lambda.txt new file mode 100644 index 000000000..61a0d2fb5 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.txt @@ -0,0 +1,5 @@ +# another gem from john denero ... +def a(b): + a, b = b(3) + +a(lambda a: (lambda b: a, a)) diff --git a/v3/tests/backend-tests/john-triple-nesting.golden b/v3/tests/backend-tests/john-triple-nesting.golden new file mode 100644 index 000000000..61283f9c5 --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.golden @@ -0,0 +1,11 @@ +{ + "code": "# test in Python 3\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 22 + } + ] +} diff --git a/v3/tests/backend-tests/john-triple-nesting.golden_py3 b/v3/tests/backend-tests/john-triple-nesting.golden_py3 new file mode 100644 index 000000000..9d1bd8c9f --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.golden_py3 @@ -0,0 +1,3726 @@ +{ + "code": "# test in Python 3\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "() ", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "() ", + 1 + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-triple-nesting.txt b/v3/tests/backend-tests/john-triple-nesting.txt new file mode 100644 index 000000000..60a949231 --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.txt @@ -0,0 +1,13 @@ +# test in Python 3 +def f(t): + def g(t): + def h(): + nonlocal t + t += 1 + return h, lambda: t + h, gt = g(0) + return h, gt, lambda: t +h, gt, ft = f(0) +ft(), gt() +h() +ft(), gt() diff --git a/v3/tests/backend-tests/key-error.golden b/v3/tests/backend-tests/key-error.golden new file mode 100644 index 000000000..9cd1f5980 --- /dev/null +++ b/v3/tests/backend-tests/key-error.golden @@ -0,0 +1,58 @@ +{ + "code": "x = {}\nx['jane']\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "exception_msg": "KeyError: ('jane',)", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/key-error.golden_py3 b/v3/tests/backend-tests/key-error.golden_py3 new file mode 100644 index 000000000..9cd1f5980 --- /dev/null +++ b/v3/tests/backend-tests/key-error.golden_py3 @@ -0,0 +1,58 @@ +{ + "code": "x = {}\nx['jane']\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "exception_msg": "KeyError: ('jane',)", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/key-error.txt b/v3/tests/backend-tests/key-error.txt new file mode 100644 index 000000000..1f5589a65 --- /dev/null +++ b/v3/tests/backend-tests/key-error.txt @@ -0,0 +1,2 @@ +x = {} +x['jane'] diff --git a/v3/tests/backend-tests/lambda_1.golden b/v3/tests/backend-tests/lambda_1.golden new file mode 100644 index 000000000..a4466ec86 --- /dev/null +++ b/v3/tests/backend-tests/lambda_1.golden @@ -0,0 +1,5493 @@ +{ + "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 5))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "55\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/lambda_1.golden_py3 b/v3/tests/backend-tests/lambda_1.golden_py3 new file mode 100644 index 000000000..a4466ec86 --- /dev/null +++ b/v3/tests/backend-tests/lambda_1.golden_py3 @@ -0,0 +1,5493 @@ +{ + "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 5))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x) ", + 1 + ], + "4": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "55\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/lambda_1.txt b/v3/tests/backend-tests/lambda_1.txt new file mode 100644 index 000000000..da6d717e0 --- /dev/null +++ b/v3/tests/backend-tests/lambda_1.txt @@ -0,0 +1,12 @@ +def summation(low, high, f, next): + s = 0 + x = low + while x <= high: + s = s + f(x) + x = next(x) + return s + +def sumsquares(low, high): + return summation(low, high, lambda x: x**2, lambda x: x+1) + +print(sumsquares(1, 5)) diff --git a/v3/tests/backend-tests/ling-scheme-1.golden b/v3/tests/backend-tests/ling-scheme-1.golden new file mode 100644 index 000000000..48cff696b --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-1.golden @@ -0,0 +1,4020 @@ +{ + "code": "def repeat(f, n):\n if n == 0:\n return []\n else:\n return [f()] + repeat(f, n - 1)\n\nrepeat(lambda : 5, 5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "4": [ + "LIST", + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "5": [ + "LIST", + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "6": [ + "LIST", + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "7": [ + "LIST", + 5, + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 8 + ], + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "8": [ + "LIST", + 5, + 5, + 5, + 5, + 5 + ], + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-1.golden_py3 b/v3/tests/backend-tests/ling-scheme-1.golden_py3 new file mode 100644 index 000000000..48cff696b --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-1.golden_py3 @@ -0,0 +1,4020 @@ +{ + "code": "def repeat(f, n):\n if n == 0:\n return []\n else:\n return [f()] + repeat(f, n - 1)\n\nrepeat(lambda : 5, 5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "4": [ + "LIST", + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "5": [ + "LIST", + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "6": [ + "LIST", + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ], + "7": [ + "LIST", + 5, + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 8 + ], + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "8": [ + "LIST", + 5, + 5, + 5, + 5, + 5 + ], + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "() ", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-1.txt b/v3/tests/backend-tests/ling-scheme-1.txt new file mode 100644 index 000000000..254102edc --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-1.txt @@ -0,0 +1,7 @@ +def repeat(f, n): + if n == 0: + return [] + else: + return [f()] + repeat(f, n - 1) + +repeat(lambda : 5, 5) diff --git a/v3/tests/backend-tests/ling-scheme-2.golden b/v3/tests/backend-tests/ling-scheme-2.golden new file mode 100644 index 000000000..add7f461f --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-2.golden @@ -0,0 +1,3788 @@ +{ + "code": "def iota(n):\n def loop(acc, k):\n if k == n:\n return list(reversed(acc))\n else:\n return loop([k] + acc, k + 1)\n return loop([], 0)\n\nresult = iota(5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "__return__": [ + "REF", + 9 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "__return__": [ + "REF", + 9 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 9 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 9 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 9 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 9 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "iota", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p_z", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "result": [ + "REF", + 9 + ], + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-2.golden_py3 b/v3/tests/backend-tests/ling-scheme-2.golden_py3 new file mode 100644 index 000000000..add7f461f --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-2.golden_py3 @@ -0,0 +1,3788 @@ +{ + "code": "def iota(n):\n def loop(acc, k):\n if k == n:\n return list(reversed(acc))\n else:\n return loop([k] + acc, k + 1)\n return loop([], 0)\n\nresult = iota(5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "__return__": [ + "REF", + 9 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "__return__": [ + "REF", + 9 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 9 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 9 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 9 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 9 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "iota", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p_z", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "result": [ + "REF", + 9 + ], + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-2.txt b/v3/tests/backend-tests/ling-scheme-2.txt new file mode 100644 index 000000000..b94897002 --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-2.txt @@ -0,0 +1,10 @@ +def iota(n): + def loop(acc, k): + if k == n: + return list(reversed(acc)) + else: + return loop([k] + acc, k + 1) + return loop([], 0) + +result = iota(5) + diff --git a/v3/tests/backend-tests/ling-scheme-3.golden b/v3/tests/backend-tests/ling-scheme-3.golden new file mode 100644 index 000000000..4047de3db --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-3.golden @@ -0,0 +1,9009 @@ +{ + "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + list(map(f, xs[1:]))\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ], + "11": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ], + "12": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 17 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "17": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 19 + ], + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ], + "19": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 20 + ], + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ], + "22": [ + "LIST" + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": [ + "REF", + 27 + ], + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "27": [ + "LIST", + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "result": [ + "REF", + 28 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-3.golden_py3 b/v3/tests/backend-tests/ling-scheme-3.golden_py3 new file mode 100644 index 000000000..4047de3db --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-3.golden_py3 @@ -0,0 +1,9009 @@ +{ + "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + list(map(f, xs[1:]))\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": " _f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ], + "11": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ], + "12": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x) ", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 17 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [ + 7 + ], + "unique_hash": " _f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "17": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 19 + ], + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "18": [ + "LIST" + ], + "19": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 20 + ], + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x) ", + 7 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ], + "22": [ + "LIST" + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": [ + "REF", + 27 + ], + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "27": [ + "LIST", + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "result": [ + "REF", + 28 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-3.txt b/v3/tests/backend-tests/ling-scheme-3.txt new file mode 100644 index 000000000..14ee800e8 --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-3.txt @@ -0,0 +1,21 @@ +def map(f, xs): + if xs == []: + return [] + else: + return [f(xs[0])] + list(map(f, xs[1:])) + +def append(xs, ys): + if xs == []: + return ys + else: + return [xs[0]] + append(xs[1:], ys) + +def pairs(xs): + if xs == []: + return [] + elif xs[1:] == []: + return [] + else: + return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:])) + +result = pairs([1, 2, 3]) diff --git a/v3/tests/backend-tests/list_dict_test.golden b/v3/tests/backend-tests/list_dict_test.golden new file mode 100644 index 000000000..4baefb4f5 --- /dev/null +++ b/v3/tests/backend-tests/list_dict_test.golden @@ -0,0 +1,416 @@ +{ + "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "{'world': 1, 'hello': 0, 'goodbye': 2}\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_dict_test.golden_py3 b/v3/tests/backend-tests/list_dict_test.golden_py3 new file mode 100644 index 000000000..4baefb4f5 --- /dev/null +++ b/v3/tests/backend-tests/list_dict_test.golden_py3 @@ -0,0 +1,416 @@ +{ + "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "{'world': 1, 'hello': 0, 'goodbye': 2}\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_dict_test.txt b/v3/tests/backend-tests/list_dict_test.txt new file mode 100644 index 000000000..b44628526 --- /dev/null +++ b/v3/tests/backend-tests/list_dict_test.txt @@ -0,0 +1,6 @@ +x = {} +l = ['hello', "world", 'goodbye'] +for (i, e) in enumerate(l): + x[e] = i +print(x) + diff --git a/v3/tests/backend-tests/list_sum.golden b/v3/tests/backend-tests/list_sum.golden new file mode 100644 index 000000000..332b07b21 --- /dev/null +++ b/v3/tests/backend-tests/list_sum.golden @@ -0,0 +1,2125 @@ +{ + "code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0, + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 6, + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 6, + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_sum.golden_py3 b/v3/tests/backend-tests/list_sum.golden_py3 new file mode 100644 index 000000000..332b07b21 --- /dev/null +++ b/v3/tests/backend-tests/list_sum.golden_py3 @@ -0,0 +1,2125 @@ +{ + "code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0, + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 6, + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 6, + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_sum.txt b/v3/tests/backend-tests/list_sum.txt new file mode 100644 index 000000000..ce2556a0d --- /dev/null +++ b/v3/tests/backend-tests/list_sum.txt @@ -0,0 +1,9 @@ +def listSum(numbers): + if not numbers: + return 0 + else: + (f, rest) = numbers + return f + listSum(rest) + +myList = (1, (2, (3, None))) +total = listSum(myList) diff --git a/v3/tests/backend-tests/list_test.golden b/v3/tests/backend-tests/list_test.golden new file mode 100644 index 000000000..9d34156ff --- /dev/null +++ b/v3/tests/backend-tests/list_test.golden @@ -0,0 +1,48 @@ +{ + "code": "x = [1, 2, \"hello\", (3, 4)]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + "hello", + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 1, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_test.golden_py3 b/v3/tests/backend-tests/list_test.golden_py3 new file mode 100644 index 000000000..9d34156ff --- /dev/null +++ b/v3/tests/backend-tests/list_test.golden_py3 @@ -0,0 +1,48 @@ +{ + "code": "x = [1, 2, \"hello\", (3, 4)]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + "hello", + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 1, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_test.txt b/v3/tests/backend-tests/list_test.txt new file mode 100644 index 000000000..a56999261 --- /dev/null +++ b/v3/tests/backend-tests/list_test.txt @@ -0,0 +1 @@ +x = [1, 2, "hello", (3, 4)] diff --git a/v3/tests/backend-tests/namedtuple.golden b/v3/tests/backend-tests/namedtuple.golden new file mode 100644 index 000000000..02f8867cd --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.golden @@ -0,0 +1,620 @@ +{ + "code": "from collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\n\n#R3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\n#R4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\n#R5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\n#R6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n#R7 = Restaurant(\"McDonald's\", \"Burgers\", \"333-4443\", \"Big Mac\", 3.95)\n#R8 = Restaurant(\"Burger King\", \"Burgers\", \"444-3344\", \"Whopper\", 3.75)\n#R9 = Restaurant(\"Wahoo's\", \"Fish Tacos\", \"443-4443\", \"Mahi Mahi Burrito\", 7.50)\n#R10 = Restaurant(\"In-N-Out Burger\", \"Burgers\", \"434-3344\", \"Cheeseburger\", 2.50)\n#R11 = Restaurant(\"The Shack\", \"Burgers\", \"333-3334\", \"Hot Link Burger\", 4.50)\n#R12 = Restaurant(\"Gina's\", \"Pizza\", \"334-4433\", \"Combo Pizza\", 12.95)\n#R13 = Restaurant(\"Peacock, Room\", \"Indian\", \"333-4443\", \"Rogan Josh\", 12.50)\n#R14 = Restaurant(\"Gaylord\", \"Indian\", \"333-3433\", \"Tandoori Chicken\", 13.50)\n#R15 = Restaurant(\"Mr. Chow\", \"Chinese\", \"222-3333\", \"Peking Duck\", 24.50)\n#R16 = Restaurant(\"Chez Panisse\", \"California\", \"222-3322\", \"Grilled Duck Breast\", 25.00)\n#R17 = Restaurant(\"Spago\", \"California\", \"333-2222\", \"Striped Bass\", 24.50)\n#R18 = Restaurant(\"Sriped Bass\", \"Seafood\", \"333-2233\", \"Cedar Plank Salmon\", 21.50)\n#R19 = Restaurant(\"Golden Pagoda\", \"Chinese\", \"232-3232\", \"Egg Foo Young\", 8.50)\n#R20 = Restaurant(\"Langer's\", \"Delicatessen\", \"333-2223\", \"Pastrami Sandwich\", 11.50)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/namedtuple.golden_py3 b/v3/tests/backend-tests/namedtuple.golden_py3 new file mode 100644 index 000000000..5af269044 --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.golden_py3 @@ -0,0 +1,620 @@ +{ + "code": "from collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\n\n#R3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\n#R4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\n#R5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\n#R6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n#R7 = Restaurant(\"McDonald's\", \"Burgers\", \"333-4443\", \"Big Mac\", 3.95)\n#R8 = Restaurant(\"Burger King\", \"Burgers\", \"444-3344\", \"Whopper\", 3.75)\n#R9 = Restaurant(\"Wahoo's\", \"Fish Tacos\", \"443-4443\", \"Mahi Mahi Burrito\", 7.50)\n#R10 = Restaurant(\"In-N-Out Burger\", \"Burgers\", \"434-3344\", \"Cheeseburger\", 2.50)\n#R11 = Restaurant(\"The Shack\", \"Burgers\", \"333-3334\", \"Hot Link Burger\", 4.50)\n#R12 = Restaurant(\"Gina's\", \"Pizza\", \"334-4433\", \"Combo Pizza\", 12.95)\n#R13 = Restaurant(\"Peacock, Room\", \"Indian\", \"333-4443\", \"Rogan Josh\", 12.50)\n#R14 = Restaurant(\"Gaylord\", \"Indian\", \"333-3433\", \"Tandoori Chicken\", 13.50)\n#R15 = Restaurant(\"Mr. Chow\", \"Chinese\", \"222-3333\", \"Peking Duck\", 24.50)\n#R16 = Restaurant(\"Chez Panisse\", \"California\", \"222-3322\", \"Grilled Duck Breast\", 25.00)\n#R17 = Restaurant(\"Spago\", \"California\", \"333-2222\", \"Striped Bass\", 24.50)\n#R18 = Restaurant(\"Sriped Bass\", \"Seafood\", \"333-2233\", \"Cedar Plank Salmon\", 21.50)\n#R19 = Restaurant(\"Golden Pagoda\", \"Chinese\", \"232-3232\", \"Egg Foo Young\", 8.50)\n#R20 = Restaurant(\"Langer's\", \"Delicatessen\", \"333-2223\", \"Pastrami Sandwich\", 11.50)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/namedtuple.txt b/v3/tests/backend-tests/namedtuple.txt new file mode 100644 index 000000000..218d64349 --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.txt @@ -0,0 +1,25 @@ +from collections import namedtuple + +Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price') + +R1 = Restaurant("Taillevent", "French", "343-3434", "Escargots", 24.50) +R2 = Restaurant("La Tour D'Argent", "French", "343-3344", "Ris de Veau", 48.50) + +#R3 = Restaurant("Pascal", "French", "333-4444", "Bouillabaisse", 32.00) +#R4 = Restaurant("Thai Touch", "Thai", "444-3333", "Mee Krob", 10.95) +#R5 = Restaurant("Thai Dishes", "Thai", "333-4433", "Paht Woon Sen", 8.50) +#R6 = Restaurant("Thai Spoon", "Thai", "334-3344", "Mussamun", 9.00) +#R7 = Restaurant("McDonald's", "Burgers", "333-4443", "Big Mac", 3.95) +#R8 = Restaurant("Burger King", "Burgers", "444-3344", "Whopper", 3.75) +#R9 = Restaurant("Wahoo's", "Fish Tacos", "443-4443", "Mahi Mahi Burrito", 7.50) +#R10 = Restaurant("In-N-Out Burger", "Burgers", "434-3344", "Cheeseburger", 2.50) +#R11 = Restaurant("The Shack", "Burgers", "333-3334", "Hot Link Burger", 4.50) +#R12 = Restaurant("Gina's", "Pizza", "334-4433", "Combo Pizza", 12.95) +#R13 = Restaurant("Peacock, Room", "Indian", "333-4443", "Rogan Josh", 12.50) +#R14 = Restaurant("Gaylord", "Indian", "333-3433", "Tandoori Chicken", 13.50) +#R15 = Restaurant("Mr. Chow", "Chinese", "222-3333", "Peking Duck", 24.50) +#R16 = Restaurant("Chez Panisse", "California", "222-3322", "Grilled Duck Breast", 25.00) +#R17 = Restaurant("Spago", "California", "333-2222", "Striped Bass", 24.50) +#R18 = Restaurant("Sriped Bass", "Seafood", "333-2233", "Cedar Plank Salmon", 21.50) +#R19 = Restaurant("Golden Pagoda", "Chinese", "232-3232", "Egg Foo Young", 8.50) +#R20 = Restaurant("Langer's", "Delicatessen", "333-2223", "Pastrami Sandwich", 11.50) diff --git a/v3/tests/backend-tests/nested-class-test.golden b/v3/tests/backend-tests/nested-class-test.golden new file mode 100644 index 000000000..5c15d317d --- /dev/null +++ b/v3/tests/backend-tests/nested-class-test.golden @@ -0,0 +1,305 @@ +{ + "code": "class A:\n x = 5\n class B:\n y = 6\n class C:\n z = 7\n\na = A()\nb = a.B()\nc = b.C()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ], + "5": [ + "INSTANCE", + "B" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ], + "c": [ + "REF", + 6 + ], + "b": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ], + "5": [ + "INSTANCE", + "B" + ], + "6": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-class-test.golden_py3 b/v3/tests/backend-tests/nested-class-test.golden_py3 new file mode 100644 index 000000000..5c15d317d --- /dev/null +++ b/v3/tests/backend-tests/nested-class-test.golden_py3 @@ -0,0 +1,305 @@ +{ + "code": "class A:\n x = 5\n class B:\n y = 6\n class C:\n z = 7\n\na = A()\nb = a.B()\nc = b.C()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ], + "5": [ + "INSTANCE", + "B" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ], + "c": [ + "REF", + 6 + ], + "b": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "B", + [ + "REF", + 2 + ] + ], + [ + "x", + 5 + ] + ], + "2": [ + "CLASS", + "B", + [], + [ + "C", + [ + "REF", + 3 + ] + ], + [ + "y", + 6 + ] + ], + "3": [ + "CLASS", + "C", + [], + [ + "z", + 7 + ] + ], + "4": [ + "INSTANCE", + "A" + ], + "5": [ + "INSTANCE", + "B" + ], + "6": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-class-test.txt b/v3/tests/backend-tests/nested-class-test.txt new file mode 100644 index 000000000..0c4da73da --- /dev/null +++ b/v3/tests/backend-tests/nested-class-test.txt @@ -0,0 +1,10 @@ +class A: + x = 5 + class B: + y = 6 + class C: + z = 7 + +a = A() +b = a.B() +c = b.C() diff --git a/v3/tests/backend-tests/nested-func-double-call.golden b/v3/tests/backend-tests/nested-func-double-call.golden new file mode 100644 index 000000000..a81b85d29 --- /dev/null +++ b/v3/tests/backend-tests/nested-func-double-call.golden @@ -0,0 +1,698 @@ +{ + "code": "# from Berkeley CS61a:\ndef f(p, k):\n def g(): # super tricky because there are two g's with DIFFERENT parent frames\n print(k)\n if k == 0:\n f(g, 1)\n\nf(None, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-func-double-call.golden_py3 b/v3/tests/backend-tests/nested-func-double-call.golden_py3 new file mode 100644 index 000000000..a81b85d29 --- /dev/null +++ b/v3/tests/backend-tests/nested-func-double-call.golden_py3 @@ -0,0 +1,698 @@ +{ + "code": "# from Berkeley CS61a:\ndef f(p, k):\n def g(): # super tricky because there are two g's with DIFFERENT parent frames\n print(k)\n if k == 0:\n f(g, 1)\n\nf(None, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "p", + "k" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "p": null, + "k": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "p": [ + "REF", + 2 + ], + "k": 1, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "p", + "k", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(p, k)", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-func-double-call.txt b/v3/tests/backend-tests/nested-func-double-call.txt new file mode 100644 index 000000000..d0fd10b0f --- /dev/null +++ b/v3/tests/backend-tests/nested-func-double-call.txt @@ -0,0 +1,8 @@ +# from Berkeley CS61a: +def f(p, k): + def g(): # super tricky because there are two g's with DIFFERENT parent frames + print(k) + if k == 0: + f(g, 1) + +f(None, 0) diff --git a/v3/tests/backend-tests/nested-func-identical-frames.golden b/v3/tests/backend-tests/nested-func-identical-frames.golden new file mode 100644 index 000000000..299be5e11 --- /dev/null +++ b/v3/tests/backend-tests/nested-func-identical-frames.golden @@ -0,0 +1,1102 @@ +{ + "code": "def f():\n def g():\n pass\n return g\n\nf()()\nf()()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p", + "ordered_varnames": [ + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-func-identical-frames.golden_py3 b/v3/tests/backend-tests/nested-func-identical-frames.golden_py3 new file mode 100644 index 000000000..299be5e11 --- /dev/null +++ b/v3/tests/backend-tests/nested-func-identical-frames.golden_py3 @@ -0,0 +1,1102 @@ +{ + "code": "def f():\n def g():\n pass\n return g\n\nf()()\nf()()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p", + "ordered_varnames": [ + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f3_p_z", + "ordered_varnames": [ + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f()", + null + ], + "2": [ + "FUNCTION", + "g()", + 1 + ], + "3": [ + "FUNCTION", + "g()", + 3 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/nested-func-identical-frames.txt b/v3/tests/backend-tests/nested-func-identical-frames.txt new file mode 100644 index 000000000..460c70c03 --- /dev/null +++ b/v3/tests/backend-tests/nested-func-identical-frames.txt @@ -0,0 +1,7 @@ +def f(): + def g(): + pass + return g + +f()() +f()() diff --git a/v3/tests/backend-tests/newstyle_class.golden b/v3/tests/backend-tests/newstyle_class.golden new file mode 100644 index 000000000..e54f299c0 --- /dev/null +++ b/v3/tests/backend-tests/newstyle_class.golden @@ -0,0 +1,817 @@ +{ + "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint(a.bla)\nprint(A.bla)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\nA\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/newstyle_class.golden_py3 b/v3/tests/backend-tests/newstyle_class.golden_py3 new file mode 100644 index 000000000..e54f299c0 --- /dev/null +++ b/v3/tests/backend-tests/newstyle_class.golden_py3 @@ -0,0 +1,817 @@ +{ + "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint(a.bla)\nprint(A.bla)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "x_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\nA\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 1 + ], + "a": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + null + ], + "3": [ + "FUNCTION", + "x(self)", + null + ], + "4": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/newstyle_class.txt b/v3/tests/backend-tests/newstyle_class.txt new file mode 100644 index 000000000..bc5e5551a --- /dev/null +++ b/v3/tests/backend-tests/newstyle_class.txt @@ -0,0 +1,15 @@ +class A(object): + bla = "A" + def __init__(self): + self.blb = "B" + + def x(self): + self.bla = self.blb + +a = A() + +a.x() + +print(a.bla) +print(A.bla) + diff --git a/v3/tests/backend-tests/one_func.golden b/v3/tests/backend-tests/one_func.golden new file mode 100644 index 000000000..ecd811f5c --- /dev/null +++ b/v3/tests/backend-tests/one_func.golden @@ -0,0 +1,350 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/one_func.golden_py3 b/v3/tests/backend-tests/one_func.golden_py3 new file mode 100644 index 000000000..ecd811f5c --- /dev/null +++ b/v3/tests/backend-tests/one_func.golden_py3 @@ -0,0 +1,350 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/one_func.txt b/v3/tests/backend-tests/one_func.txt new file mode 100644 index 000000000..9ade23636 --- /dev/null +++ b/v3/tests/backend-tests/one_func.txt @@ -0,0 +1,8 @@ +def add(a, b, c): + d = a + b + return c + d + +x = 5 +y = 10 +z = x * y +print(add(x, y, z)) diff --git a/v3/tests/backend-tests/open_error.golden b/v3/tests/backend-tests/open_error.golden new file mode 100644 index 000000000..7f343f9c8 --- /dev/null +++ b/v3/tests/backend-tests/open_error.golden @@ -0,0 +1,26 @@ +{ + "code": "for line in open(\"/etc/passwd\"):\n print(line)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "NameError: name 'open' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/open_error.golden_py3 b/v3/tests/backend-tests/open_error.golden_py3 new file mode 100644 index 000000000..7f343f9c8 --- /dev/null +++ b/v3/tests/backend-tests/open_error.golden_py3 @@ -0,0 +1,26 @@ +{ + "code": "for line in open(\"/etc/passwd\"):\n print(line)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "NameError: name 'open' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/open_error.txt b/v3/tests/backend-tests/open_error.txt new file mode 100644 index 000000000..a80454764 --- /dev/null +++ b/v3/tests/backend-tests/open_error.txt @@ -0,0 +1,3 @@ +for line in open("/etc/passwd"): + print(line) + diff --git a/v3/tests/backend-tests/papajohn-monster.golden b/v3/tests/backend-tests/papajohn-monster.golden new file mode 100644 index 000000000..d52ccd889 --- /dev/null +++ b/v3/tests/backend-tests/papajohn-monster.golden @@ -0,0 +1,988 @@ +{ + "code": "# original reported by papajohn in Oct 2013\nclass Monster:\n vampire = {2: 'scary'}\n def werewolf(self):\n return self.vampire[2]\n\nclass Blob(Monster):\n vampire = {2: 'night'}\n def __init__(self, ghoul):\n self.witch = ghoul.vampire\n self.witch[3] = self\n\nspooky = Blob(Monster)\nspooky.werewolf = lambda self: Monster.vampire[2]\n\n\n# minimized by pgbovine ...\n'''\nclass Monster:\n def werewolf(self):\n pass\n\nclass Blob(Monster):\n def __init__(self, ghoul):\n pass\n\nspooky = Blob(Monster)\n'''\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Monster": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul", + "__return__" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "werewolf", + [ + "REF", + 8 + ] + ], + [ + "witch", + [ + "REF", + 2 + ] + ] + ], + "8": [ + "FUNCTION", + "(self) ", + null + ] + }, + "line": 28, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "werewolf", + [ + "REF", + 8 + ] + ], + [ + "witch", + [ + "REF", + 2 + ] + ] + ], + "8": [ + "FUNCTION", + "(self) ", + null + ] + }, + "line": 28, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/papajohn-monster.golden_py3 b/v3/tests/backend-tests/papajohn-monster.golden_py3 new file mode 100644 index 000000000..d52ccd889 --- /dev/null +++ b/v3/tests/backend-tests/papajohn-monster.golden_py3 @@ -0,0 +1,988 @@ +{ + "code": "# original reported by papajohn in Oct 2013\nclass Monster:\n vampire = {2: 'scary'}\n def werewolf(self):\n return self.vampire[2]\n\nclass Blob(Monster):\n vampire = {2: 'night'}\n def __init__(self, ghoul):\n self.witch = ghoul.vampire\n self.witch[3] = self\n\nspooky = Blob(Monster)\nspooky.werewolf = lambda self: Monster.vampire[2]\n\n\n# minimized by pgbovine ...\n'''\nclass Monster:\n def werewolf(self):\n pass\n\nclass Blob(Monster):\n def __init__(self, ghoul):\n pass\n\nspooky = Blob(Monster)\n'''\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Monster": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 7 + ], + "ghoul": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "__init___f1", + "ordered_varnames": [ + "self", + "ghoul", + "__return__" + ] + } + ], + "globals": { + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "witch", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "werewolf", + [ + "REF", + 8 + ] + ], + [ + "witch", + [ + "REF", + 2 + ] + ] + ], + "8": [ + "FUNCTION", + "(self) ", + null + ] + }, + "line": 28, + "event": "step_line" + }, + { + "ordered_globals": [ + "Monster", + "Blob", + "spooky" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "spooky": [ + "REF", + 7 + ], + "Monster": [ + "REF", + 1 + ], + "Blob": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "CLASS", + "Monster", + [], + [ + "vampire", + [ + "REF", + 2 + ] + ], + [ + "werewolf", + [ + "REF", + 3 + ] + ] + ], + "2": [ + "DICT", + [ + 2, + "scary" + ], + [ + 3, + [ + "REF", + 7 + ] + ] + ], + "3": [ + "FUNCTION", + "werewolf(self)", + null + ], + "4": [ + "CLASS", + "Blob", + [ + "Monster" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "vampire", + [ + "REF", + 6 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, ghoul)", + null + ], + "6": [ + "DICT", + [ + 2, + "night" + ] + ], + "7": [ + "INSTANCE", + "Blob", + [ + "werewolf", + [ + "REF", + 8 + ] + ], + [ + "witch", + [ + "REF", + 2 + ] + ] + ], + "8": [ + "FUNCTION", + "(self) ", + null + ] + }, + "line": 28, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/papajohn-monster.txt b/v3/tests/backend-tests/papajohn-monster.txt new file mode 100644 index 000000000..700090839 --- /dev/null +++ b/v3/tests/backend-tests/papajohn-monster.txt @@ -0,0 +1,28 @@ +# original reported by papajohn in Oct 2013 +class Monster: + vampire = {2: 'scary'} + def werewolf(self): + return self.vampire[2] + +class Blob(Monster): + vampire = {2: 'night'} + def __init__(self, ghoul): + self.witch = ghoul.vampire + self.witch[3] = self + +spooky = Blob(Monster) +spooky.werewolf = lambda self: Monster.vampire[2] + + +# minimized by pgbovine ... +''' +class Monster: + def werewolf(self): + pass + +class Blob(Monster): + def __init__(self, ghoul): + pass + +spooky = Blob(Monster) +''' diff --git a/v3/tests/backend-tests/parent-finding-1.golden b/v3/tests/backend-tests/parent-finding-1.golden new file mode 100644 index 000000000..00a4aab28 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.golden @@ -0,0 +1,483 @@ +{ + "code": "# make sure OPT finds f as the parent of g\ndef f(x, y):\n def g(x):\n return x + y\n return g(3)\n\nf(1, 2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-1.golden_py3 b/v3/tests/backend-tests/parent-finding-1.golden_py3 new file mode 100644 index 000000000..00a4aab28 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.golden_py3 @@ -0,0 +1,483 @@ +{ + "code": "# make sure OPT finds f as the parent of g\ndef f(x, y):\n def g(x):\n return x + y\n return g(3)\n\nf(1, 2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-1.txt b/v3/tests/backend-tests/parent-finding-1.txt new file mode 100644 index 000000000..0726f0726 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.txt @@ -0,0 +1,7 @@ +# make sure OPT finds f as the parent of g +def f(x, y): + def g(x): + return x + y + return g(3) + +f(1, 2) diff --git a/v3/tests/backend-tests/parent-finding-2.golden b/v3/tests/backend-tests/parent-finding-2.golden new file mode 100644 index 000000000..c17bd4180 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.golden @@ -0,0 +1,957 @@ +{ + "code": "# make sure OPT finds horse as parent of mask\ndef horse(mask):\n horse = mask\n def mask(horse):\n return horse\n return horse(mask)\n\nmask = lambda horse: horse(2)\n\nhorse(mask)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 2, + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p_z", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-2.golden_py3 b/v3/tests/backend-tests/parent-finding-2.golden_py3 new file mode 100644 index 000000000..c17bd4180 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.golden_py3 @@ -0,0 +1,957 @@ +{ + "code": "# make sure OPT finds horse as parent of mask\ndef horse(mask):\n horse = mask\n def mask(horse):\n return horse\n return horse(mask)\n\nmask = lambda horse: horse(2)\n\nhorse(mask)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 2, + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": " ", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": " _f2", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p_z", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse) ", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-2.txt b/v3/tests/backend-tests/parent-finding-2.txt new file mode 100644 index 000000000..c117d4163 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.txt @@ -0,0 +1,10 @@ +# make sure OPT finds horse as parent of mask +def horse(mask): + horse = mask + def mask(horse): + return horse + return horse(mask) + +mask = lambda horse: horse(2) + +horse(mask) diff --git a/v3/tests/backend-tests/parse_error.golden b/v3/tests/backend-tests/parse_error.golden new file mode 100644 index 000000000..047dce543 --- /dev/null +++ b/v3/tests/backend-tests/parse_error.golden @@ -0,0 +1,11 @@ +{ + "code": "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n\n", + "trace": [ + { + "exception_msg": "IndentationError: unexpected indent (, line 4)", + "line": 4, + "event": "uncaught_exception", + "offset": 3 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error.golden_py3 b/v3/tests/backend-tests/parse_error.golden_py3 new file mode 100644 index 000000000..047dce543 --- /dev/null +++ b/v3/tests/backend-tests/parse_error.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n\n", + "trace": [ + { + "exception_msg": "IndentationError: unexpected indent (, line 4)", + "line": 4, + "event": "uncaught_exception", + "offset": 3 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error.txt b/v3/tests/backend-tests/parse_error.txt new file mode 100644 index 000000000..efab03533 --- /dev/null +++ b/v3/tests/backend-tests/parse_error.txt @@ -0,0 +1,6 @@ +x = 0 +for i in range(10): + x += 1 + print x + x += 1 + diff --git a/v3/tests/backend-tests/parse_error_2.golden b/v3/tests/backend-tests/parse_error_2.golden new file mode 100644 index 000000000..a6973b8ee --- /dev/null +++ b/v3/tests/backend-tests/parse_error_2.golden @@ -0,0 +1,11 @@ +{ + "code": "x = 5\ny = x\nz = x + y\n\nfor x haslk;fjlasfhlkjl;sa\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_2.golden_py3 b/v3/tests/backend-tests/parse_error_2.golden_py3 new file mode 100644 index 000000000..a6973b8ee --- /dev/null +++ b/v3/tests/backend-tests/parse_error_2.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = 5\ny = x\nz = x + y\n\nfor x haslk;fjlasfhlkjl;sa\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_2.txt b/v3/tests/backend-tests/parse_error_2.txt new file mode 100644 index 000000000..80070e74b --- /dev/null +++ b/v3/tests/backend-tests/parse_error_2.txt @@ -0,0 +1,5 @@ +x = 5 +y = x +z = x + y + +for x haslk;fjlasfhlkjl;sa diff --git a/v3/tests/backend-tests/parse_error_3.golden b/v3/tests/backend-tests/parse_error_3.golden new file mode 100644 index 000000000..8ae537dd0 --- /dev/null +++ b/v3/tests/backend-tests/parse_error_3.golden @@ -0,0 +1,11 @@ +{ + "code": "x = []\nfor i in range(10):\n x.append(i)\n if i == 24:\n pass\n print y\n", + "trace": [ + { + "exception_msg": "IndentationError: unindent does not match any outer indentation level (, line 6)", + "line": 6, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_3.golden_py3 b/v3/tests/backend-tests/parse_error_3.golden_py3 new file mode 100644 index 000000000..8ae537dd0 --- /dev/null +++ b/v3/tests/backend-tests/parse_error_3.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = []\nfor i in range(10):\n x.append(i)\n if i == 24:\n pass\n print y\n", + "trace": [ + { + "exception_msg": "IndentationError: unindent does not match any outer indentation level (, line 6)", + "line": 6, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_3.txt b/v3/tests/backend-tests/parse_error_3.txt new file mode 100644 index 000000000..bcc7bbf0e --- /dev/null +++ b/v3/tests/backend-tests/parse_error_3.txt @@ -0,0 +1,6 @@ +x = [] +for i in range(10): + x.append(i) + if i == 24: + pass + print y diff --git a/v3/tests/backend-tests/pie-test.golden b/v3/tests/backend-tests/pie-test.golden new file mode 100644 index 000000000..1a5218ee0 --- /dev/null +++ b/v3/tests/backend-tests/pie-test.golden @@ -0,0 +1,91 @@ +{ + "code": "import operator\nfrom math import pi, e\npie = operator.add(pi, e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718 + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e", + "pie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718, + "pie": 5.860 + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/pie-test.golden_py3 b/v3/tests/backend-tests/pie-test.golden_py3 new file mode 100644 index 000000000..e913056f2 --- /dev/null +++ b/v3/tests/backend-tests/pie-test.golden_py3 @@ -0,0 +1,91 @@ +{ + "code": "import operator\nfrom math import pi, e\npie = operator.add(pi, e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718 + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e", + "pie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718, + "pie": 5.860 + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/pie-test.txt b/v3/tests/backend-tests/pie-test.txt new file mode 100644 index 000000000..a73f77ec2 --- /dev/null +++ b/v3/tests/backend-tests/pie-test.txt @@ -0,0 +1,3 @@ +import operator +from math import pi, e +pie = operator.add(pi, e) diff --git a/v3/tests/backend-tests/py-modules.golden b/v3/tests/backend-tests/py-modules.golden new file mode 100644 index 000000000..6f5f87c33 --- /dev/null +++ b/v3/tests/backend-tests/py-modules.golden @@ -0,0 +1,132 @@ +{ + "code": "# test to make sure nothing crashes when tracing code in pure-Python\n# function calls imported from modules\nimport random\nrandom.randint(10, 100)\n\nfrom re import compile\nx = compile('foo')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ], + "3": [ + "_sre.SRE_Pattern", + "<_sre.SRE_Pattern object at 0xADDR>" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py-modules.golden_py3 b/v3/tests/backend-tests/py-modules.golden_py3 new file mode 100644 index 000000000..e8551d9ee --- /dev/null +++ b/v3/tests/backend-tests/py-modules.golden_py3 @@ -0,0 +1,132 @@ +{ + "code": "# test to make sure nothing crashes when tracing code in pure-Python\n# function calls imported from modules\nimport random\nrandom.randint(10, 100)\n\nfrom re import compile\nx = compile('foo')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ], + "3": [ + "INSTANCE", + "SRE_Pattern" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py-modules.txt b/v3/tests/backend-tests/py-modules.txt new file mode 100644 index 000000000..eb4211809 --- /dev/null +++ b/v3/tests/backend-tests/py-modules.txt @@ -0,0 +1,7 @@ +# test to make sure nothing crashes when tracing code in pure-Python +# function calls imported from modules +import random +random.randint(10, 100) + +from re import compile +x = compile('foo') diff --git a/v3/tests/backend-tests/py3_func_annotations.golden b/v3/tests/backend-tests/py3_func_annotations.golden new file mode 100644 index 000000000..a62687849 --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.golden @@ -0,0 +1,11 @@ +{ + "code": "# test case of Python 3 function annotations inspired by David G. Kay\ndef remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant':\n \"\"\" Given name, remove all Restaurants with that name from collection.\n \"\"\"\n result = []\n for r in L:\n if r.name != name:\n result.append(r)\n return result\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 2)", + "line": 2, + "event": "uncaught_exception", + "offset": 21 + } + ] +} diff --git a/v3/tests/backend-tests/py3_func_annotations.golden_py3 b/v3/tests/backend-tests/py3_func_annotations.golden_py3 new file mode 100644 index 000000000..20571a78e --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.golden_py3 @@ -0,0 +1,38 @@ +{ + "code": "# test case of Python 3 function annotations inspired by David G. Kay\ndef remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant':\n \"\"\" Given name, remove all Restaurants with that name from collection.\n \"\"\"\n result = []\n for r in L:\n if r.name != name:\n result.append(r)\n return result\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "remove_by_name" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "remove_by_name": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "remove_by_name(L, name)", + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py3_func_annotations.txt b/v3/tests/backend-tests/py3_func_annotations.txt new file mode 100644 index 000000000..24037afbf --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.txt @@ -0,0 +1,9 @@ +# test case of Python 3 function annotations inspired by David G. Kay +def remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant': + """ Given name, remove all Restaurants with that name from collection. + """ + result = [] + for r in L: + if r.name != name: + result.append(r) + return result diff --git a/v3/tests/backend-tests/py3_kwonly_args.golden b/v3/tests/backend-tests/py3_kwonly_args.golden new file mode 100644 index 000000000..f8bfc9a22 --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.golden @@ -0,0 +1,11 @@ +{ + "code": "# Python 3 keyword-only arguments\ndef my_sorted(iterable, *, reverse=False, key=None):\n pass\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 2)", + "line": 2, + "event": "uncaught_exception", + "offset": 26 + } + ] +} diff --git a/v3/tests/backend-tests/py3_kwonly_args.golden_py3 b/v3/tests/backend-tests/py3_kwonly_args.golden_py3 new file mode 100644 index 000000000..2affddfb3 --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.golden_py3 @@ -0,0 +1,38 @@ +{ + "code": "# Python 3 keyword-only arguments\ndef my_sorted(iterable, *, reverse=False, key=None):\n pass\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "my_sorted" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "my_sorted": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "my_sorted(iterable, reverse, key)", + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py3_kwonly_args.txt b/v3/tests/backend-tests/py3_kwonly_args.txt new file mode 100644 index 000000000..e49a8d85a --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.txt @@ -0,0 +1,3 @@ +# Python 3 keyword-only arguments +def my_sorted(iterable, *, reverse=False, key=None): + pass diff --git a/v3/tests/backend-tests/restaurants.golden b/v3/tests/backend-tests/restaurants.golden new file mode 100644 index 000000000..29333dfed --- /dev/null +++ b/v3/tests/backend-tests/restaurants.golden @@ -0,0 +1,4041 @@ +{ + "code": "# Adapted from an example by David G. Kay\nfrom collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n\nRL = [R1, R2, R3, R4, R5, R6]\n\nFrenchRestaurants = [r for r in RL if r.cuisine==\"French\"]\nprint(FrenchRestaurants)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 16 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 17 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 19 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 20 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r", + "FrenchRestaurants" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r", + "FrenchRestaurants" + ], + "stdout": "[Restaurant(name='Taillevent', cuisine='French', phone='343-3434', dish='Escargots', price=24.5), Restaurant(name=\"La Tour D'Argent\", cuisine='French', phone='343-3344', dish='Ris de Veau', price=48.5), Restaurant(name='Pascal', cuisine='French', phone='333-4444', dish='Bouillabaisse', price=32.0)]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/restaurants.golden_py3 b/v3/tests/backend-tests/restaurants.golden_py3 new file mode 100644 index 000000000..260b288b5 --- /dev/null +++ b/v3/tests/backend-tests/restaurants.golden_py3 @@ -0,0 +1,5076 @@ +{ + "code": "# Adapted from an example by David G. Kay\nfrom collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n\nRL = [R1, R2, R3, R4, R5, R6]\n\nFrenchRestaurants = [r for r in RL if r.cuisine==\"French\"]\nprint(FrenchRestaurants)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "call" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 17 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 18 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 19 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 20 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "__return__": [ + "REF", + 24 + ], + "r": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r", + "__return__" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "FrenchRestaurants" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "FrenchRestaurants" + ], + "stdout": "[Restaurant(name='Taillevent', cuisine='French', phone='343-3434', dish='Escargots', price=24.5), Restaurant(name=\"La Tour D'Argent\", cuisine='French', phone='343-3344', dish='Ris de Veau', price=48.5), Restaurant(name='Pascal', cuisine='French', phone='333-4444', dish='Bouillabaisse', price=32.0)]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/restaurants.txt b/v3/tests/backend-tests/restaurants.txt new file mode 100644 index 000000000..3d7c3b186 --- /dev/null +++ b/v3/tests/backend-tests/restaurants.txt @@ -0,0 +1,16 @@ +# Adapted from an example by David G. Kay +from collections import namedtuple + +Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price') + +R1 = Restaurant("Taillevent", "French", "343-3434", "Escargots", 24.50) +R2 = Restaurant("La Tour D'Argent", "French", "343-3344", "Ris de Veau", 48.50) +R3 = Restaurant("Pascal", "French", "333-4444", "Bouillabaisse", 32.00) +R4 = Restaurant("Thai Touch", "Thai", "444-3333", "Mee Krob", 10.95) +R5 = Restaurant("Thai Dishes", "Thai", "333-4433", "Paht Woon Sen", 8.50) +R6 = Restaurant("Thai Spoon", "Thai", "334-3344", "Mussamun", 9.00) + +RL = [R1, R2, R3, R4, R5, R6] + +FrenchRestaurants = [r for r in RL if r.cuisine=="French"] +print(FrenchRestaurants) diff --git a/v3/tests/backend-tests/runtime_error.golden b/v3/tests/backend-tests/runtime_error.golden new file mode 100644 index 000000000..c26590156 --- /dev/null +++ b/v3/tests/backend-tests/runtime_error.golden @@ -0,0 +1,440 @@ +{ + "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print(z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/runtime_error.golden_py3 b/v3/tests/backend-tests/runtime_error.golden_py3 new file mode 100644 index 000000000..c26590156 --- /dev/null +++ b/v3/tests/backend-tests/runtime_error.golden_py3 @@ -0,0 +1,440 @@ +{ + "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print(z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/runtime_error.txt b/v3/tests/backend-tests/runtime_error.txt new file mode 100644 index 000000000..d8be5bf4a --- /dev/null +++ b/v3/tests/backend-tests/runtime_error.txt @@ -0,0 +1,8 @@ +x = 5 +for i in range(10): + if i == x: + z = x + y # ERROR! + else: + z = i + print(z) + diff --git a/v3/tests/backend-tests/set_test.golden b/v3/tests/backend-tests/set_test.golden new file mode 100644 index 000000000..bf39a5207 --- /dev/null +++ b/v3/tests/backend-tests/set_test.golden @@ -0,0 +1,151 @@ +{ + "code": "x = set()\nx.add('a')\nx.add('a')\nx.add('b')\nx.add('c')\nx.add('b')\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "b" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/set_test.golden_py3 b/v3/tests/backend-tests/set_test.golden_py3 new file mode 100644 index 000000000..bf39a5207 --- /dev/null +++ b/v3/tests/backend-tests/set_test.golden_py3 @@ -0,0 +1,151 @@ +{ + "code": "x = set()\nx.add('a')\nx.add('a')\nx.add('b')\nx.add('c')\nx.add('b')\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "b" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/set_test.txt b/v3/tests/backend-tests/set_test.txt new file mode 100644 index 000000000..72ca6fa0a --- /dev/null +++ b/v3/tests/backend-tests/set_test.txt @@ -0,0 +1,7 @@ +x = set() +x.add('a') +x.add('a') +x.add('b') +x.add('c') +x.add('b') + diff --git a/v3/tests/backend-tests/simple.golden b/v3/tests/backend-tests/simple.golden new file mode 100644 index 000000000..c3f69caa6 --- /dev/null +++ b/v3/tests/backend-tests/simple.golden @@ -0,0 +1,501 @@ +{ + "code": "x = 5\ny = 10\nz = x * y\nprint(\"HELLO WORLD\")\nfor i in range(10):\n print(z * i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "y": 10, + "z": 50, + "x": 5 + }, + "heap": {}, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/simple.golden_py3 b/v3/tests/backend-tests/simple.golden_py3 new file mode 100644 index 000000000..c3f69caa6 --- /dev/null +++ b/v3/tests/backend-tests/simple.golden_py3 @@ -0,0 +1,501 @@ +{ + "code": "x = 5\ny = 10\nz = x * y\nprint(\"HELLO WORLD\")\nfor i in range(10):\n print(z * i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "y": 10, + "z": 50, + "x": 5 + }, + "heap": {}, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/simple.txt b/v3/tests/backend-tests/simple.txt new file mode 100644 index 000000000..8b7c08a7d --- /dev/null +++ b/v3/tests/backend-tests/simple.txt @@ -0,0 +1,7 @@ +x = 5 +y = 10 +z = x * y +print("HELLO WORLD") +for i in range(10): + print(z * i) + diff --git a/v3/tests/backend-tests/three_lists.golden b/v3/tests/backend-tests/three_lists.golden new file mode 100644 index 000000000..27775034e --- /dev/null +++ b/v3/tests/backend-tests/three_lists.golden @@ -0,0 +1,632 @@ +{ + "code": "# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za)\n\ndef f(xs):\n print(xs)\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = 24\ne = (a, b, c)\n\nf(b)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/three_lists.golden_py3 b/v3/tests/backend-tests/three_lists.golden_py3 new file mode 100644 index 000000000..27775034e --- /dev/null +++ b/v3/tests/backend-tests/three_lists.golden_py3 @@ -0,0 +1,632 @@ +{ + "code": "# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za)\n\ndef f(xs):\n print(xs)\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = 24\ne = (a, b, c)\n\nf(b)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/three_lists.txt b/v3/tests/backend-tests/three_lists.txt new file mode 100644 index 000000000..388dffc20 --- /dev/null +++ b/v3/tests/backend-tests/three_lists.txt @@ -0,0 +1,13 @@ +# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za) + +def f(xs): + print(xs) + +a = [10, 20, 30] +b = a +c = [10, 20, 30] +d = 24 +e = (a, b, c) + +f(b) + diff --git a/v3/tests/backend-tests/ttt_min.golden b/v3/tests/backend-tests/ttt_min.golden new file mode 100644 index 000000000..0f751840d --- /dev/null +++ b/v3/tests/backend-tests/ttt_min.golden @@ -0,0 +1,722 @@ +{ + "code": "# minimal tic tac toe implementation and test\n\nimport ttt_module\n\ndef interactive_player(board, symbol):\n return int(mouse_input(\"Click on board\"))\n \ng = ttt_module.TTTGame(interactive_player, interactive_player, verbose=True)\nprint(g.play())\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ttt_module": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "ttt_module" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "ttt_module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "stdout": "Initializing TTTGame\n", + "func_name": "", + "stack_to_render": [], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "ttt_module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "html_output": "
      X to play", + "stdout": "Initializing TTTGame\n
      X to play\n", + "func_name": "interactive_player", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "symbol": "X", + "board": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "interactive_player", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "interactive_player_f1", + "ordered_varnames": [ + "board", + "symbol" + ] + } + ], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "css_output": "#htmlOutputDiv table, #htmlOutputDiv td, #htmlOutputDiv th {\n background-color: white;\n border-collapse: collapse;\n border: 2px solid black; }\n#htmlOutputDiv td, #htmlOutputDiv th {\n width: 30px;\n height: 30px;\n font-family: sans-serif;\n text-align: center; }", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "ttt_module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ], + "16": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "html_output": "
      X to play", + "stdout": "Initializing TTTGame\n
      X to play\n", + "func_name": "interactive_player", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "symbol": "X", + "board": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "interactive_player", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "interactive_player_f1", + "ordered_varnames": [ + "board", + "symbol" + ] + } + ], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "css_output": "#htmlOutputDiv table, #htmlOutputDiv td, #htmlOutputDiv th {\n background-color: white;\n border-collapse: collapse;\n border: 2px solid black; }\n#htmlOutputDiv td, #htmlOutputDiv th {\n width: 30px;\n height: 30px;\n font-family: sans-serif;\n text-align: center; }", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "module", + "ttt_module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ], + "16": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + }, + "line": 6, + "event": "step_line" + }, + { + "prompt": "Click on board", + "event": "mouse_input" + } + ] +} diff --git a/v3/tests/backend-tests/ttt_min.golden_py3 b/v3/tests/backend-tests/ttt_min.golden_py3 new file mode 100644 index 000000000..fc7d2d521 --- /dev/null +++ b/v3/tests/backend-tests/ttt_min.golden_py3 @@ -0,0 +1,722 @@ +{ + "code": "# minimal tic tac toe implementation and test\n\nimport ttt_module\n\ndef interactive_player(board, symbol):\n return int(mouse_input(\"Click on board\"))\n \ng = ttt_module.TTTGame(interactive_player, interactive_player, verbose=True)\nprint(g.play())\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ttt_module": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "stdout": "Initializing TTTGame\n", + "func_name": "", + "stack_to_render": [], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "html_output": "
      X to play", + "stdout": "Initializing TTTGame\n
      X to play\n", + "func_name": "interactive_player", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "symbol": "X", + "board": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "interactive_player", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "interactive_player_f1", + "ordered_varnames": [ + "board", + "symbol" + ] + } + ], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "css_output": "#htmlOutputDiv table, #htmlOutputDiv td, #htmlOutputDiv th {\n background-color: white;\n border-collapse: collapse;\n border: 2px solid black; }\n#htmlOutputDiv td, #htmlOutputDiv th {\n width: 30px;\n height: 30px;\n font-family: sans-serif;\n text-align: center; }", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ], + "16": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "ttt_module", + "interactive_player", + "g" + ], + "html_output": "
      X to play", + "stdout": "Initializing TTTGame\n
      X to play\n", + "func_name": "interactive_player", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "symbol": "X", + "board": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "interactive_player", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "interactive_player_f1", + "ordered_varnames": [ + "board", + "symbol" + ] + } + ], + "js_output": "$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})", + "css_output": "#htmlOutputDiv table, #htmlOutputDiv td, #htmlOutputDiv th {\n background-color: white;\n border-collapse: collapse;\n border: 2px solid black; }\n#htmlOutputDiv td, #htmlOutputDiv th {\n width: 30px;\n height: 30px;\n font-family: sans-serif;\n text-align: center; }", + "globals": { + "ttt_module": [ + "REF", + 1 + ], + "g": [ + "REF", + 3 + ], + "interactive_player": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "interactive_player(board, symbol)", + null + ], + "3": [ + "INSTANCE", + "TTTGame", + [ + "board", + [ + "REF", + 4 + ] + ], + [ + "lines", + [ + "REF", + 5 + ] + ], + [ + "players", + [ + "REF", + 14 + ] + ], + [ + "symbols", + [ + "REF", + 15 + ] + ], + [ + "tomove", + 0 + ], + [ + "verbose", + true + ], + [ + "winner", + null + ] + ], + "4": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "5": [ + "LIST", + [ + "REF", + 6 + ], + [ + "REF", + 7 + ], + [ + "REF", + 8 + ], + [ + "REF", + 9 + ], + [ + "REF", + 10 + ], + [ + "REF", + 11 + ], + [ + "REF", + 12 + ], + [ + "REF", + 13 + ] + ], + "6": [ + "TUPLE", + 0, + 1, + 2 + ], + "7": [ + "TUPLE", + 3, + 4, + 5 + ], + "8": [ + "TUPLE", + 6, + 7, + 8 + ], + "9": [ + "TUPLE", + 0, + 3, + 6 + ], + "10": [ + "TUPLE", + 1, + 4, + 7 + ], + "11": [ + "TUPLE", + 2, + 5, + 8 + ], + "12": [ + "TUPLE", + 0, + 4, + 8 + ], + "13": [ + "TUPLE", + 2, + 4, + 6 + ], + "14": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ] + ], + "15": [ + "LIST", + "X", + "O" + ], + "16": [ + "LIST", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + }, + "line": 6, + "event": "step_line" + }, + { + "prompt": "Click on board", + "event": "mouse_input" + } + ] +} diff --git a/v3/tests/backend-tests/ttt_min.txt b/v3/tests/backend-tests/ttt_min.txt new file mode 100644 index 000000000..b52529788 --- /dev/null +++ b/v3/tests/backend-tests/ttt_min.txt @@ -0,0 +1,9 @@ +# minimal tic tac toe implementation and test + +import ttt_module + +def interactive_player(board, symbol): + return int(mouse_input("Click on board")) + +g = ttt_module.TTTGame(interactive_player, interactive_player, verbose=True) +print(g.play()) diff --git a/v3/tests/backend-tests/tuple_test.golden b/v3/tests/backend-tests/tuple_test.golden new file mode 100644 index 000000000..f1c5b4fc3 --- /dev/null +++ b/v3/tests/backend-tests/tuple_test.golden @@ -0,0 +1,72 @@ +{ + "code": "x = (1, 2, 3)\ny = (4,)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + 4 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/tuple_test.golden_py3 b/v3/tests/backend-tests/tuple_test.golden_py3 new file mode 100644 index 000000000..f1c5b4fc3 --- /dev/null +++ b/v3/tests/backend-tests/tuple_test.golden_py3 @@ -0,0 +1,72 @@ +{ + "code": "x = (1, 2, 3)\ny = (4,)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + 4 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/tuple_test.txt b/v3/tests/backend-tests/tuple_test.txt new file mode 100644 index 000000000..de68176ca --- /dev/null +++ b/v3/tests/backend-tests/tuple_test.txt @@ -0,0 +1,3 @@ +x = (1, 2, 3) +y = (4,) + diff --git a/v3/tests/backend-tests/two_funcs.golden b/v3/tests/backend-tests/two_funcs.golden new file mode 100644 index 000000000..9a2a15184 --- /dev/null +++ b/v3/tests/backend-tests/two_funcs.golden @@ -0,0 +1,1453 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\nprint(double_add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10, + "y": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "__return__": 130, + "y": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n130\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/two_funcs.golden_py3 b/v3/tests/backend-tests/two_funcs.golden_py3 new file mode 100644 index 000000000..9a2a15184 --- /dev/null +++ b/v3/tests/backend-tests/two_funcs.golden_py3 @@ -0,0 +1,1453 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\nprint(double_add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10, + "y": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "__return__": 130, + "y": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n130\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/two_funcs.txt b/v3/tests/backend-tests/two_funcs.txt new file mode 100644 index 000000000..32959fbd6 --- /dev/null +++ b/v3/tests/backend-tests/two_funcs.txt @@ -0,0 +1,14 @@ +def add(a, b, c): + d = a + b + return c + d + +def double_add(a, b, c): + x = add(a, b, c) + y = add(a, b, c) + return x + y + +x = 5 +y = 10 +z = x * y +print(add(x, y, z)) +print(double_add(x, y, z)) diff --git a/v3/tests/backend-tests/unicode-py2-ultimate.golden b/v3/tests/backend-tests/unicode-py2-ultimate.golden new file mode 100644 index 000000000..5dcd837e5 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2-ultimate.golden @@ -0,0 +1,1925 @@ +{ + "code": "# The ultimate Unicode test for Python 2\n\nx = '\u263a' # this is a REGULAR str with some funky bytes, NOT a smiley\ny = u'\u263a' # this is a unicode string U+263A representing a smiley\nprint x\nprint y\nassert x != y\n\nx_lst = [x]\nx_lst *= 3\n\nz = '\\x8e' # this string isn't valid unicode\nprint z\n\nprint x, y, z\n\nxyz_lst = [x, y, z]\nxyz_lst *= 3\ntypes_lst = [repr(type(e)) for e in xyz_lst]\nprint xyz_lst\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x": "\u263a" + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x": "\u263a" + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x": "\u263a" + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "__warningregistry__": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x_lst": [ + "REF", + 6 + ], + "__warningregistry__": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x_lst": [ + "REF", + 6 + ], + "__warningregistry__": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x_lst": [ + "REF", + 6 + ], + "z": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x_lst": [ + "REF", + 6 + ], + "z": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "\u00e2\u0098\u00ba", + "x_lst": [ + "REF", + 6 + ], + "z": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u263a", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u00e2\u0098\u00ba", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u263a", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u00e2\u0098\u00ba", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u263a", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\u00e2\u0098\u00ba", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd" + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e", + "types_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd", + "types_lst": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ], + "8": [ + "LIST", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "__warningregistry__", + "x_lst", + "z", + "xyz_lst", + "e", + "types_lst" + ], + "stdout": "\u263a\n\u00e2\u0098\u00ba\n\ufffd\n\u263a \u00e2\u0098\u00ba \ufffd\n['\\xe2\\x98\\xba', u'\\xe2\\x98\\xba', '\\x8e', '\\xe2\\x98\\xba', u'\\xe2\\x98\\xba', '\\x8e', '\\xe2\\x98\\xba', u'\\xe2\\x98\\xba', '\\x8e']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "__warningregistry__": [ + "REF", + 1 + ], + "x_lst": [ + "REF", + 6 + ], + "xyz_lst": [ + "REF", + 7 + ], + "y": "\u00e2\u0098\u00ba", + "x": "\u263a", + "z": "\ufffd", + "types_lst": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "DICT", + [ + [ + "REF", + 2 + ], + true + ] + ], + "2": [ + "TUPLE", + "Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal", + [ + "REF", + 3 + ], + 7 + ], + "3": [ + "CLASS", + "UnicodeWarning", + [ + "Warning" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "__new__", + [ + "REF", + 5 + ] + ] + ], + "4": [ + "wrapper_descriptor", + "" + ], + "5": [ + "FUNCTION", + "__new__(...)", + null + ], + "6": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "7": [ + "LIST", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd", + "\u263a", + "\u00e2\u0098\u00ba", + "\ufffd" + ], + "8": [ + "LIST", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 20, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py2-ultimate.golden_py3 b/v3/tests/backend-tests/unicode-py2-ultimate.golden_py3 new file mode 100644 index 000000000..c11f5ba9f --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2-ultimate.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "# The ultimate Unicode test for Python 2\n\nx = '\u263a' # this is a REGULAR str with some funky bytes, NOT a smiley\ny = u'\u263a' # this is a unicode string U+263A representing a smiley\nprint x\nprint y\nassert x != y\n\nx_lst = [x]\nx_lst *= 3\n\nz = '\\x8e' # this string isn't valid unicode\nprint z\n\nprint x, y, z\n\nxyz_lst = [x, y, z]\nxyz_lst *= 3\ntypes_lst = [repr(type(e)) for e in xyz_lst]\nprint xyz_lst\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 4)", + "line": 4, + "event": "uncaught_exception", + "offset": 10 + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py2-ultimate.txt b/v3/tests/backend-tests/unicode-py2-ultimate.txt new file mode 100644 index 000000000..dba4df33f --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2-ultimate.txt @@ -0,0 +1,20 @@ +# The ultimate Unicode test for Python 2 + +x = '☺' # this is a REGULAR str with some funky bytes, NOT a smiley +y = u'☺' # this is a unicode string U+263A representing a smiley +print x +print y +assert x != y + +x_lst = [x] +x_lst *= 3 + +z = '\x8e' # this string isn't valid unicode +print z + +print x, y, z + +xyz_lst = [x, y, z] +xyz_lst *= 3 +types_lst = [repr(type(e)) for e in xyz_lst] +print xyz_lst diff --git a/v3/tests/backend-tests/unicode-py2.golden b/v3/tests/backend-tests/unicode-py2.golden new file mode 100644 index 000000000..fe9905ab0 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2.golden @@ -0,0 +1,163 @@ +{ + "code": "# for Python 2 only\nyinyang = u'\\u262F'\nsmiley = '''\u263a'''\nfrownie = u'\\u2639'\nheart = r'\u2661'\n\nlst = [smiley, frownie]\nlst2 = lst * 5\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "smiley": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "frownie": "\u2639", + "smiley": "\u263a" + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "heart": "\u2661", + "smiley": "\u263a", + "frownie": "\u2639" + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "heart": "\u2661", + "lst": [ + "REF", + 1 + ], + "smiley": "\u263a", + "frownie": "\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u2639" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst", + "lst2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "heart": "\u2661", + "lst2": [ + "REF", + 2 + ], + "smiley": "\u263a", + "lst": [ + "REF", + 1 + ], + "yinyang": "\u262f", + "frownie": "\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u2639" + ], + "2": [ + "LIST", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639" + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py2.golden_py3 b/v3/tests/backend-tests/unicode-py2.golden_py3 new file mode 100644 index 000000000..98ab39693 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "# for Python 2 only\nyinyang = u'\\u262F'\nsmiley = '''\u263a'''\nfrownie = u'\\u2639'\nheart = r'\u2661'\n\nlst = [smiley, frownie]\nlst2 = lst * 5\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 2)", + "line": 2, + "event": "uncaught_exception", + "offset": 19 + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py2.txt b/v3/tests/backend-tests/unicode-py2.txt new file mode 100644 index 000000000..e1ed0bbb5 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py2.txt @@ -0,0 +1,8 @@ +# for Python 2 only +yinyang = u'\u262F' +smiley = '''☺''' +frownie = u'\u2639' +heart = r'♡' + +lst = [smiley, frownie] +lst2 = lst * 5 diff --git a/v3/tests/backend-tests/unicode-py3-ultimate.golden b/v3/tests/backend-tests/unicode-py3-ultimate.golden new file mode 100644 index 000000000..2847f4979 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3-ultimate.golden @@ -0,0 +1,637 @@ +{ + "code": "# The ultimate Unicode test for Python 3\n\nx = '\u263a' # this is a unicode string U+263A representing a smiley\nprint(x)\n\nx_lst = [x]\nx_lst *= 3\n\nz = '\\x8e'\nprint(z)\n\nprint(x + ' ' + z)\n\nxz_lst = [x, z]\nxz_lst *= 3\ntypes_lst = [repr(type(e)) for e in xz_lst]\nprint(xz_lst)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": "\u263a" + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n\ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\u263a", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\u263a", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\u263a", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\ufffd", + "e": "\ufffd", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e", + "types_lst" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "x_lst": [ + "REF", + 1 + ], + "xz_lst": [ + "REF", + 2 + ], + "x": "\u263a", + "z": "\ufffd", + "types_lst": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ], + "3": [ + "LIST", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "e", + "types_lst" + ], + "stdout": "\u263a\n\ufffd\n\u263a \ufffd\n['\\xe2\\x98\\xba', '\\x8e', '\\xe2\\x98\\xba', '\\x8e', '\\xe2\\x98\\xba', '\\x8e']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "\ufffd", + "x_lst": [ + "REF", + 1 + ], + "xz_lst": [ + "REF", + 2 + ], + "x": "\u263a", + "z": "\ufffd", + "types_lst": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd", + "\u263a", + "\ufffd" + ], + "3": [ + "LIST", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py3-ultimate.golden_py3 b/v3/tests/backend-tests/unicode-py3-ultimate.golden_py3 new file mode 100644 index 000000000..13736dd43 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3-ultimate.golden_py3 @@ -0,0 +1,982 @@ +{ + "code": "# The ultimate Unicode test for Python 3\n\nx = '\u263a' # this is a unicode string U+263A representing a smiley\nprint(x)\n\nx_lst = [x]\nx_lst *= 3\n\nz = '\\x8e'\nprint(z)\n\nprint(x + ' ' + z)\n\nxz_lst = [x, z]\nxz_lst *= 3\ntypes_lst = [repr(type(e)) for e in xz_lst]\nprint(xz_lst)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": "\u263a" + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n\u008e\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u263a" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u008e" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u263a" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u008e" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u263a" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "e": "\u008e" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 4 + ], + "e": "\u008e" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "3": [ + "INSTANCE", + "list_iterator" + ], + "4": [ + "LIST", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "types_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "types_lst": [ + "REF", + 4 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "4": [ + "LIST", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "x_lst", + "z", + "xz_lst", + "types_lst" + ], + "stdout": "\u263a\n\u008e\n\u263a \u008e\n['\u263a', '\\x8e', '\u263a', '\\x8e', '\u263a', '\\x8e']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "xz_lst": [ + "REF", + 2 + ], + "x_lst": [ + "REF", + 1 + ], + "z": "\u008e", + "types_lst": [ + "REF", + 4 + ], + "x": "\u263a" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u263a", + "\u263a" + ], + "2": [ + "LIST", + "\u263a", + "\u008e", + "\u263a", + "\u008e", + "\u263a", + "\u008e" + ], + "4": [ + "LIST", + "", + "", + "", + "", + "", + "" + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py3-ultimate.txt b/v3/tests/backend-tests/unicode-py3-ultimate.txt new file mode 100644 index 000000000..fc8545566 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3-ultimate.txt @@ -0,0 +1,17 @@ +# The ultimate Unicode test for Python 3 + +x = '☺' # this is a unicode string U+263A representing a smiley +print(x) + +x_lst = [x] +x_lst *= 3 + +z = '\x8e' +print(z) + +print(x + ' ' + z) + +xz_lst = [x, z] +xz_lst *= 3 +types_lst = [repr(type(e)) for e in xz_lst] +print(xz_lst) diff --git a/v3/tests/backend-tests/unicode-py3.golden b/v3/tests/backend-tests/unicode-py3.golden new file mode 100644 index 000000000..809d111c2 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3.golden @@ -0,0 +1,163 @@ +{ + "code": "# for Python 3 only\nyinyang = '\\u262F'\nsmiley = '''\u263a'''\nfrownie = '\\u2639'\nheart = r'\u2661'\n\nlst = [smiley, frownie]\nlst2 = lst * 5\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\\u262F" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\\u262F", + "smiley": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\\u262F", + "frownie": "\\u2639", + "smiley": "\u263a" + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\\u262F", + "heart": "\u2661", + "smiley": "\u263a", + "frownie": "\\u2639" + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\\u262F", + "heart": "\u2661", + "lst": [ + "REF", + 1 + ], + "smiley": "\u263a", + "frownie": "\\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\\u2639" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst", + "lst2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "heart": "\u2661", + "lst2": [ + "REF", + 2 + ], + "smiley": "\u263a", + "lst": [ + "REF", + 1 + ], + "yinyang": "\\u262F", + "frownie": "\\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\\u2639" + ], + "2": [ + "LIST", + "\u263a", + "\\u2639", + "\u263a", + "\\u2639", + "\u263a", + "\\u2639", + "\u263a", + "\\u2639", + "\u263a", + "\\u2639" + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py3.golden_py3 b/v3/tests/backend-tests/unicode-py3.golden_py3 new file mode 100644 index 000000000..8fe2d4c13 --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3.golden_py3 @@ -0,0 +1,163 @@ +{ + "code": "# for Python 3 only\nyinyang = '\\u262F'\nsmiley = '''\u263a'''\nfrownie = '\\u2639'\nheart = r'\u2661'\n\nlst = [smiley, frownie]\nlst2 = lst * 5\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "smiley": "\u263a" + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "frownie": "\u2639", + "smiley": "\u263a" + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "heart": "\u2661", + "smiley": "\u263a", + "frownie": "\u2639" + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "yinyang": "\u262f", + "heart": "\u2661", + "lst": [ + "REF", + 1 + ], + "smiley": "\u263a", + "frownie": "\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u2639" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "yinyang", + "smiley", + "frownie", + "heart", + "lst", + "lst2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "heart": "\u2661", + "lst2": [ + "REF", + 2 + ], + "smiley": "\u263a", + "lst": [ + "REF", + 1 + ], + "yinyang": "\u262f", + "frownie": "\u2639" + }, + "heap": { + "1": [ + "LIST", + "\u263a", + "\u2639" + ], + "2": [ + "LIST", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639", + "\u263a", + "\u2639" + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/unicode-py3.txt b/v3/tests/backend-tests/unicode-py3.txt new file mode 100644 index 000000000..3ab168d8f --- /dev/null +++ b/v3/tests/backend-tests/unicode-py3.txt @@ -0,0 +1,8 @@ +# for Python 3 only +yinyang = '\u262F' +smiley = '''☺''' +frownie = '\u2639' +heart = r'♡' + +lst = [smiley, frownie] +lst2 = lst * 5 diff --git a/v3/tests/backend-tests/varargs.golden b/v3/tests/backend-tests/varargs.golden new file mode 100644 index 000000000..64cd90d22 --- /dev/null +++ b/v3/tests/backend-tests/varargs.golden @@ -0,0 +1,267 @@ +{ + "code": "def parrot(mandatory, mandatory2, *args, **kwargs):\n pass\n\nparrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs", + "__return__" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/varargs.golden_py3 b/v3/tests/backend-tests/varargs.golden_py3 new file mode 100644 index 000000000..64cd90d22 --- /dev/null +++ b/v3/tests/backend-tests/varargs.golden_py3 @@ -0,0 +1,267 @@ +{ + "code": "def parrot(mandatory, mandatory2, *args, **kwargs):\n pass\n\nparrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs", + "__return__" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/varargs.txt b/v3/tests/backend-tests/varargs.txt new file mode 100644 index 000000000..6e26086ea --- /dev/null +++ b/v3/tests/backend-tests/varargs.txt @@ -0,0 +1,4 @@ +def parrot(mandatory, mandatory2, *args, **kwargs): + pass + +parrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35') diff --git a/v3/tests/diff_py23_golden_files.py b/v3/tests/diff_py23_golden_files.py new file mode 100644 index 000000000..904cb6d04 --- /dev/null +++ b/v3/tests/diff_py23_golden_files.py @@ -0,0 +1,7 @@ +import os, itertools, subprocess + +for (dn, sd, files) in itertools.chain(os.walk('backend-tests/'), os.walk('../example-code/')): + for f in files: + bn, ext = os.path.splitext(f) + if ext == '.golden': + subprocess.call(['diff', '-u', os.path.join(dn, bn + ext), os.path.join(dn, bn + '.golden_py3')]) diff --git a/v3/tests/example-code b/v3/tests/example-code new file mode 120000 index 000000000..153b6e23a --- /dev/null +++ b/v3/tests/example-code @@ -0,0 +1 @@ +../example-code \ No newline at end of file diff --git a/v3/tests/frontend-tests/basic-data-structures.py b/v3/tests/frontend-tests/basic-data-structures.py new file mode 100644 index 000000000..0204e2c8d --- /dev/null +++ b/v3/tests/frontend-tests/basic-data-structures.py @@ -0,0 +1,24 @@ +# numbers! +age = 26 +pi = 3.14159 + +# strings! +s = 'Rutherford Birchard Hayes' +tokens = s.split() + +# list (mutable sequence) +beatles = ['John', 'Paul', 'George'] + +# tuple (immutable sequence) +ages = (18, 21, 28, 21, 22) + +# set (no order, no duplicates) +uniqueAges = set() # empty set +uniqueAges = set(ages) +uniqueAges.remove(21) + +# dict - mapping unique keys to values +netWorth = {} +netWorth['Donald Trump'] = 3000000000 +netWorth['Bill Gates'] = 58000000000 +netWorth['Joe Postdoc'] = 20000 diff --git a/v3/tests/frontend-tests/binary-tree.py b/v3/tests/frontend-tests/binary-tree.py new file mode 100644 index 000000000..0ff9409e7 --- /dev/null +++ b/v3/tests/frontend-tests/binary-tree.py @@ -0,0 +1 @@ +t = [[['a', 'b'], ['c', 'd']], [[1,2], [3,4]]] diff --git a/v3/tests/frontend-tests/circular.py b/v3/tests/frontend-tests/circular.py new file mode 100644 index 000000000..d6d690f6c --- /dev/null +++ b/v3/tests/frontend-tests/circular.py @@ -0,0 +1,9 @@ +x = [1,2] +y = [1,2] +z = [1,2] +w = [1,2] + +x[1] = y +y[1] = z +z[1] = w +w[1] = x diff --git a/v3/tests/frontend-tests/criss-cross.py b/v3/tests/frontend-tests/criss-cross.py new file mode 100644 index 000000000..5018ecdd4 --- /dev/null +++ b/v3/tests/frontend-tests/criss-cross.py @@ -0,0 +1,3 @@ +x = [1,2] +y = [3,x] +x[1] = y diff --git a/v3/tests/frontend-tests/double-nudge.py b/v3/tests/frontend-tests/double-nudge.py new file mode 100644 index 000000000..b6e55f773 --- /dev/null +++ b/v3/tests/frontend-tests/double-nudge.py @@ -0,0 +1,6 @@ +x = [1, [2, None]] +y = [1, 2] +z = [1, 2] + +x[1][0] = y # should nudge y to over the right +z[1] = x # should nudge BOTH x and y over to the right diff --git a/v3/tests/frontend-tests/failed-tests/README b/v3/tests/frontend-tests/failed-tests/README new file mode 100644 index 000000000..beb455229 --- /dev/null +++ b/v3/tests/frontend-tests/failed-tests/README @@ -0,0 +1,2 @@ +this directory is where the .png files of failed frontend tests get +stored by ../opt_frontend_golden_test.py diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.10.png new file mode 100644 index 000000000..ce7b15aa4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.11.png new file mode 100644 index 000000000..cfeccf35b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.12.png new file mode 100644 index 000000000..658fb0759 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.13.png new file mode 100644 index 000000000..84d344063 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.14.png new file mode 100644 index 000000000..dd312d000 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.15.png new file mode 100644 index 000000000..1084042bf Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.16.png new file mode 100644 index 000000000..966c5107d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.17.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.17.png new file mode 100644 index 000000000..0d3fa49ea Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.18.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.18.png new file mode 100644 index 000000000..0d3fa49ea Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.19.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.19.png new file mode 100644 index 000000000..0615ab4a3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.2.png new file mode 100644 index 000000000..dc74115b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.20.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.20.png new file mode 100644 index 000000000..620bc3fb7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.21.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.21.png new file mode 100644 index 000000000..620bc3fb7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.22.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.22.png new file mode 100644 index 000000000..9213cb664 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.23.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.23.png new file mode 100644 index 000000000..0e13a6af9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.24.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.24.png new file mode 100644 index 000000000..fc3d4d963 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.25.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.25.png new file mode 100644 index 000000000..d096295ae Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.26.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.26.png new file mode 100644 index 000000000..d096295ae Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.27.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.27.png new file mode 100644 index 000000000..71a4d81b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.28.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.28.png new file mode 100644 index 000000000..b45be68d3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.29.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.29.png new file mode 100644 index 000000000..b45be68d3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.3.png new file mode 100644 index 000000000..a2b252cb9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.30.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.30.png new file mode 100644 index 000000000..363a06672 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.31.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.31.png new file mode 100644 index 000000000..7f79a3391 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.31.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.32.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.32.png new file mode 100644 index 000000000..685a29876 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.32.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.4.png new file mode 100644 index 000000000..8138e2e54 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.5.png new file mode 100644 index 000000000..156d5f9d4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.6.png new file mode 100644 index 000000000..252bbeedb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.7.png new file mode 100644 index 000000000..3fafddfd8 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.8.png new file mode 100644 index 000000000..c50cc7539 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.9.png new file mode 100644 index 000000000..5efd3b273 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.2.png new file mode 100644 index 000000000..074316b20 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.3.png new file mode 100644 index 000000000..00d454fd1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.4.png new file mode 100644 index 000000000..eb2615528 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.5.png new file mode 100644 index 000000000..b839e00d2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/aliasing8.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.10.png new file mode 100644 index 000000000..0860e0e54 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.11.png new file mode 100644 index 000000000..4432f75d1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.12.png new file mode 100644 index 000000000..a16c2c272 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.13.png new file mode 100644 index 000000000..436e93756 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.14.png new file mode 100644 index 000000000..b73245799 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.2.png new file mode 100644 index 000000000..953aa911b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.3.png new file mode 100644 index 000000000..a4b690746 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.4.png new file mode 100644 index 000000000..baf937bbd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.5.png new file mode 100644 index 000000000..328b2b666 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.6.png new file mode 100644 index 000000000..a0d5f0a5b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.7.png new file mode 100644 index 000000000..6f1b9058a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.8.png new file mode 100644 index 000000000..d32ba7cb5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.9.png new file mode 100644 index 000000000..901ac8fa4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/basic-data-structures.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/binary-tree.py.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/binary-tree.py.step.2.png new file mode 100644 index 000000000..a9dfdbf17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/binary-tree.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.2.png new file mode 100644 index 000000000..f44a64597 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.3.png new file mode 100644 index 000000000..1c050074d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.4.png new file mode 100644 index 000000000..a735cc7bf Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.5.png new file mode 100644 index 000000000..003d68ed0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.6.png new file mode 100644 index 000000000..9f7abd2ff Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.7.png new file mode 100644 index 000000000..aef2497d9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.8.png new file mode 100644 index 000000000..8641ccaca Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.9.png new file mode 100644 index 000000000..56cca856b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/circular.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.10.png new file mode 100644 index 000000000..20c6647c7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.11.png new file mode 100644 index 000000000..205f12a26 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.12.png new file mode 100644 index 000000000..ab32457b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.13.png new file mode 100644 index 000000000..3f9838268 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.14.png new file mode 100644 index 000000000..3f9838268 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.15.png new file mode 100644 index 000000000..1b730e3a5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.16.png new file mode 100644 index 000000000..0f8ef4528 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.2.png new file mode 100644 index 000000000..122cfe307 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.3.png new file mode 100644 index 000000000..cd0f28720 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.4.png new file mode 100644 index 000000000..acfcb4aaa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.5.png new file mode 100644 index 000000000..acfcb4aaa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.6.png new file mode 100644 index 000000000..5265b6757 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.7.png new file mode 100644 index 000000000..14310f98f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.8.png new file mode 100644 index 000000000..14310f98f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.9.png new file mode 100644 index 000000000..8087a38ce Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/closure3.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.2.png new file mode 100644 index 000000000..d602755c6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.3.png new file mode 100644 index 000000000..ac6f38a8b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.4.png new file mode 100644 index 000000000..6c8991230 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/criss-cross.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.2.png new file mode 100644 index 000000000..12825e858 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.3.png new file mode 100644 index 000000000..67cb9e591 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.4.png new file mode 100644 index 000000000..2033d90bc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.5.png new file mode 100644 index 000000000..ef333bd95 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.6.png new file mode 100644 index 000000000..de579a8d5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/double-nudge.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.10.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.11.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.12.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.13.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.14.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.15.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.16.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.17.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.17.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.18.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.18.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.19.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.19.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.2.png new file mode 100644 index 000000000..162420b98 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.20.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.20.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.21.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.21.png new file mode 100644 index 000000000..bd2837bdd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.22.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.22.png new file mode 100644 index 000000000..54db2756a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.23.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.23.png new file mode 100644 index 000000000..63dc72f60 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.24.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.24.png new file mode 100644 index 000000000..732070acc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.25.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.25.png new file mode 100644 index 000000000..82bb19e51 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.26.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.26.png new file mode 100644 index 000000000..099aecc9c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.27.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.27.png new file mode 100644 index 000000000..05ccfce99 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.3.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.4.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.5.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.6.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.7.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.8.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.9.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/fact.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.10.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.11.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.12.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.13.png new file mode 100644 index 000000000..82ea7a79e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.14.png new file mode 100644 index 000000000..82ea7a79e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.15.png new file mode 100644 index 000000000..7c10fcc9f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.16.png new file mode 100644 index 000000000..a2ddf242d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.17.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.17.png new file mode 100644 index 000000000..a2ddf242d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.18.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.18.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.19.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.19.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.2.png new file mode 100644 index 000000000..2f1269ce6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.20.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.20.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.3.png new file mode 100644 index 000000000..b81c64cd6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.4.png new file mode 100644 index 000000000..072757d06 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.5.png new file mode 100644 index 000000000..072757d06 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.6.png new file mode 100644 index 000000000..d161f4329 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.7.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.8.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.9.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/filter.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.10.png new file mode 100644 index 000000000..ac1e25774 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.11.png new file mode 100644 index 000000000..b5d615143 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.12.png new file mode 100644 index 000000000..359cef590 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.13.png new file mode 100644 index 000000000..1b5503dfa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.14.png new file mode 100644 index 000000000..d01c82f3d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.15.png new file mode 100644 index 000000000..d01c82f3d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.16.png new file mode 100644 index 000000000..90966c779 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.17.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.17.png new file mode 100644 index 000000000..7f484f896 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.18.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.18.png new file mode 100644 index 000000000..bdfe631f2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.19.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.19.png new file mode 100644 index 000000000..39a413cf6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.2.png new file mode 100644 index 000000000..714e375da Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.20.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.20.png new file mode 100644 index 000000000..e509ca0d6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.21.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.21.png new file mode 100644 index 000000000..f2df9ceb6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.22.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.22.png new file mode 100644 index 000000000..6b89706a4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.23.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.23.png new file mode 100644 index 000000000..8ff65562f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.24.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.24.png new file mode 100644 index 000000000..d28aa13f4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.25.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.25.png new file mode 100644 index 000000000..5a0bb14bc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.26.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.26.png new file mode 100644 index 000000000..c8d9c9981 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.27.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.27.png new file mode 100644 index 000000000..7271d791f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.28.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.28.png new file mode 100644 index 000000000..2a1f55e4e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.29.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.29.png new file mode 100644 index 000000000..2a1f55e4e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.3.png new file mode 100644 index 000000000..2f3214cad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.30.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.30.png new file mode 100644 index 000000000..2e7090cd8 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.4.png new file mode 100644 index 000000000..0b46bcea5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.5.png new file mode 100644 index 000000000..c29223c7b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.6.png new file mode 100644 index 000000000..a823339ab Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.7.png new file mode 100644 index 000000000..f8d85ac28 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.8.png new file mode 100644 index 000000000..c208d0739 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.9.png new file mode 100644 index 000000000..0daadd628 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/ll1.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.10.png new file mode 100644 index 000000000..a746c6b44 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.11.png new file mode 100644 index 000000000..8937eb0df Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.2.png new file mode 100644 index 000000000..50dcfef1c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.3.png new file mode 100644 index 000000000..2a9878903 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.4.png new file mode 100644 index 000000000..eef30004c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.5.png new file mode 100644 index 000000000..eef30004c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.6.png new file mode 100644 index 000000000..2aef6fc61 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.7.png new file mode 100644 index 000000000..e77095a12 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.8.png new file mode 100644 index 000000000..e77095a12 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.9.png new file mode 100644 index 000000000..d401420d0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/oop_inherit.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.10.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.10.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.11.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.11.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.12.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.12.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.13.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.13.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.14.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.14.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.15.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.15.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.16.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.16.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.17.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.17.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.18.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.18.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.19.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.19.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.2.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.2.png new file mode 100644 index 000000000..8fb0dbf9f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.20.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.20.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.21.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.21.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.22.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.22.png new file mode 100644 index 000000000..5d8a39e47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.23.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.23.png new file mode 100644 index 000000000..b7217edc4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.24.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.24.png new file mode 100644 index 000000000..036ed54fd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.25.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.25.png new file mode 100644 index 000000000..540f00970 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.26.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.26.png new file mode 100644 index 000000000..bd33273be Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.27.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.27.png new file mode 100644 index 000000000..fe3f897e6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.28.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.28.png new file mode 100644 index 000000000..7a21edde4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.3.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.3.png new file mode 100644 index 000000000..6f9a2bef6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.4.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.4.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.5.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.5.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.6.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.6.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.7.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.7.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.8.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.8.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.9.png b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.9.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/composingprograms/sum-list.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.10.png new file mode 100644 index 000000000..e91c13bca Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.11.png new file mode 100644 index 000000000..df5b7d562 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.12.png new file mode 100644 index 000000000..7afa6bd64 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.13.png new file mode 100644 index 000000000..d24ab8b77 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.14.png new file mode 100644 index 000000000..1127bdcb4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.15.png new file mode 100644 index 000000000..0206d0f9b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.16.png new file mode 100644 index 000000000..b3b57891b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.17.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.17.png new file mode 100644 index 000000000..c2bdd86ad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.18.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.18.png new file mode 100644 index 000000000..c2bdd86ad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.19.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.19.png new file mode 100644 index 000000000..0c2bacfa7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.2.png new file mode 100644 index 000000000..9ef4923d4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.20.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.20.png new file mode 100644 index 000000000..df13a6d7d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.21.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.21.png new file mode 100644 index 000000000..df13a6d7d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.22.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.22.png new file mode 100644 index 000000000..100df1ad2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.23.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.23.png new file mode 100644 index 000000000..eb4bd93ff Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.24.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.24.png new file mode 100644 index 000000000..b2dd58fda Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.25.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.25.png new file mode 100644 index 000000000..21e5c3da9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.26.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.26.png new file mode 100644 index 000000000..21e5c3da9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.27.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.27.png new file mode 100644 index 000000000..0d855afe7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.28.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.28.png new file mode 100644 index 000000000..85c05fafc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.29.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.29.png new file mode 100644 index 000000000..85c05fafc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.3.png new file mode 100644 index 000000000..f91442f17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.30.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.30.png new file mode 100644 index 000000000..12dde6277 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.31.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.31.png new file mode 100644 index 000000000..a86720560 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.31.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.32.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.32.png new file mode 100644 index 000000000..a6a62419d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.32.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.4.png new file mode 100644 index 000000000..f9ef164e7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.5.png new file mode 100644 index 000000000..359cf9987 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.6.png new file mode 100644 index 000000000..a07dc2606 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.7.png new file mode 100644 index 000000000..6a6353f23 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.8.png new file mode 100644 index 000000000..58cd97468 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.9.png new file mode 100644 index 000000000..e3c3e761c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.2.png new file mode 100644 index 000000000..197c5c91e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.3.png new file mode 100644 index 000000000..9d64b0c87 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.4.png new file mode 100644 index 000000000..d630f4efe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.5.png new file mode 100644 index 000000000..e6a83bbad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/aliasing8.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.10.png new file mode 100644 index 000000000..068013214 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.11.png new file mode 100644 index 000000000..11d4ff12f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.12.png new file mode 100644 index 000000000..e0d4ae52f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.13.png new file mode 100644 index 000000000..71c061677 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.14.png new file mode 100644 index 000000000..57cfed5d2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.2.png new file mode 100644 index 000000000..d16603658 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.3.png new file mode 100644 index 000000000..331b748d5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.4.png new file mode 100644 index 000000000..f0c8d696f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.5.png new file mode 100644 index 000000000..b299bec38 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.6.png new file mode 100644 index 000000000..f457c98a3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.7.png new file mode 100644 index 000000000..67ed044ac Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.8.png new file mode 100644 index 000000000..e2e33ae7f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.9.png new file mode 100644 index 000000000..31d442809 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/basic-data-structures.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/binary-tree.py.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/binary-tree.py.step.2.png new file mode 100644 index 000000000..6f40a5937 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/binary-tree.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.2.png new file mode 100644 index 000000000..7de6f61cb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.3.png new file mode 100644 index 000000000..84b02c7b6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.4.png new file mode 100644 index 000000000..a960f575d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.5.png new file mode 100644 index 000000000..23deff82f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.6.png new file mode 100644 index 000000000..bae16101f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.7.png new file mode 100644 index 000000000..e20dcf08d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.8.png new file mode 100644 index 000000000..6f6bc5118 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.9.png new file mode 100644 index 000000000..eed5f0fae Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/circular.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.10.png new file mode 100644 index 000000000..c770165bd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.11.png new file mode 100644 index 000000000..53abe7fd7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.12.png new file mode 100644 index 000000000..af4197b04 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.13.png new file mode 100644 index 000000000..e7de67d6e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.14.png new file mode 100644 index 000000000..e7de67d6e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.15.png new file mode 100644 index 000000000..663865f29 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.16.png new file mode 100644 index 000000000..af4197b04 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.2.png new file mode 100644 index 000000000..60fe1724a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.3.png new file mode 100644 index 000000000..cc1066a48 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.4.png new file mode 100644 index 000000000..73c91bb0c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.5.png new file mode 100644 index 000000000..73c91bb0c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.6.png new file mode 100644 index 000000000..5f601a472 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.7.png new file mode 100644 index 000000000..78204cbf5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.8.png new file mode 100644 index 000000000..78204cbf5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.9.png new file mode 100644 index 000000000..7b8f24035 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/closure3.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.2.png new file mode 100644 index 000000000..54390de80 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.3.png new file mode 100644 index 000000000..9d4abe631 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.4.png new file mode 100644 index 000000000..c363b1d47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/criss-cross.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.2.png new file mode 100644 index 000000000..3889706be Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.3.png new file mode 100644 index 000000000..cf1ddc3fa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.4.png new file mode 100644 index 000000000..3e4dead42 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.5.png new file mode 100644 index 000000000..1ba3a0535 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.6.png new file mode 100644 index 000000000..ea42e5e50 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/double-nudge.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.10.png new file mode 100644 index 000000000..9d65f4e95 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.11.png new file mode 100644 index 000000000..9d65f4e95 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.12.png new file mode 100644 index 000000000..585537cc3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.13.png new file mode 100644 index 000000000..585537cc3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.14.png new file mode 100644 index 000000000..585537cc3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.15.png new file mode 100644 index 000000000..f2d8ad63c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.16.png new file mode 100644 index 000000000..f2d8ad63c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.17.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.17.png new file mode 100644 index 000000000..f2d8ad63c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.18.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.18.png new file mode 100644 index 000000000..1d1216501 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.19.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.19.png new file mode 100644 index 000000000..1d1216501 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.2.png new file mode 100644 index 000000000..04cd6a92d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.20.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.20.png new file mode 100644 index 000000000..1d1216501 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.21.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.21.png new file mode 100644 index 000000000..104bd33d2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.22.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.22.png new file mode 100644 index 000000000..3074fa390 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.23.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.23.png new file mode 100644 index 000000000..047505515 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.24.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.24.png new file mode 100644 index 000000000..bcc39f0ed Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.25.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.25.png new file mode 100644 index 000000000..d0c9c9280 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.26.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.26.png new file mode 100644 index 000000000..b643b9e7a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.27.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.27.png new file mode 100644 index 000000000..04cd6a92d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.3.png new file mode 100644 index 000000000..7aa97cea0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.4.png new file mode 100644 index 000000000..7aa97cea0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.5.png new file mode 100644 index 000000000..7aa97cea0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.6.png new file mode 100644 index 000000000..32b2270f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.7.png new file mode 100644 index 000000000..32b2270f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.8.png new file mode 100644 index 000000000..32b2270f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.9.png new file mode 100644 index 000000000..9d65f4e95 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/fact.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.10.png new file mode 100644 index 000000000..c227aa3ba Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.11.png new file mode 100644 index 000000000..c227aa3ba Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.12.png new file mode 100644 index 000000000..c227aa3ba Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.13.png new file mode 100644 index 000000000..9ed0a9342 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.14.png new file mode 100644 index 000000000..9ed0a9342 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.15.png new file mode 100644 index 000000000..972df506e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.16.png new file mode 100644 index 000000000..dc5ea66a6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.17.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.17.png new file mode 100644 index 000000000..dc5ea66a6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.18.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.18.png new file mode 100644 index 000000000..49a7b9147 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.19.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.19.png new file mode 100644 index 000000000..49a7b9147 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.2.png new file mode 100644 index 000000000..b5fa14601 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.20.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.20.png new file mode 100644 index 000000000..49a7b9147 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.3.png new file mode 100644 index 000000000..c347ed785 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.4.png new file mode 100644 index 000000000..74a03fed3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.5.png new file mode 100644 index 000000000..74a03fed3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.6.png new file mode 100644 index 000000000..6acfa7b7c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.7.png new file mode 100644 index 000000000..8722b1cfb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.8.png new file mode 100644 index 000000000..8722b1cfb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.9.png new file mode 100644 index 000000000..8722b1cfb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/filter.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.10.png new file mode 100644 index 000000000..d276f782e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.11.png new file mode 100644 index 000000000..afdce9c4a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.12.png new file mode 100644 index 000000000..d9dd1289d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.13.png new file mode 100644 index 000000000..bc4a1973f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.14.png new file mode 100644 index 000000000..24961e974 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.15.png new file mode 100644 index 000000000..24961e974 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.16.png new file mode 100644 index 000000000..dee266cf2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.17.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.17.png new file mode 100644 index 000000000..5498be203 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.18.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.18.png new file mode 100644 index 000000000..4c3c74645 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.19.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.19.png new file mode 100644 index 000000000..5a8b8e141 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.2.png new file mode 100644 index 000000000..000f9b672 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.20.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.20.png new file mode 100644 index 000000000..007f5d619 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.21.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.21.png new file mode 100644 index 000000000..e3cf93bda Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.22.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.22.png new file mode 100644 index 000000000..061889118 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.23.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.23.png new file mode 100644 index 000000000..edeff949d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.24.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.24.png new file mode 100644 index 000000000..f02fc8b22 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.25.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.25.png new file mode 100644 index 000000000..2bec314fc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.26.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.26.png new file mode 100644 index 000000000..984b23370 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.27.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.27.png new file mode 100644 index 000000000..b09fa0137 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.28.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.28.png new file mode 100644 index 000000000..67438f1b5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.29.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.29.png new file mode 100644 index 000000000..67438f1b5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.3.png new file mode 100644 index 000000000..d00b11cfd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.30.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.30.png new file mode 100644 index 000000000..8d0745dfb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.4.png new file mode 100644 index 000000000..d4d955a19 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.5.png new file mode 100644 index 000000000..28f53b236 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.6.png new file mode 100644 index 000000000..aaeed8e71 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.7.png new file mode 100644 index 000000000..19ed582c6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.8.png new file mode 100644 index 000000000..b76364188 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.9.png new file mode 100644 index 000000000..c37d31a65 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/ll1.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.10.png new file mode 100644 index 000000000..ded0cb85e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.11.png new file mode 100644 index 000000000..951693177 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.2.png new file mode 100644 index 000000000..2f380b9ae Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.3.png new file mode 100644 index 000000000..f7cdbd8e6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.4.png new file mode 100644 index 000000000..1f7c3f05b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.5.png new file mode 100644 index 000000000..1f7c3f05b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.6.png new file mode 100644 index 000000000..4da8e834b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.7.png new file mode 100644 index 000000000..c831725eb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.8.png new file mode 100644 index 000000000..c831725eb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.9.png new file mode 100644 index 000000000..4c1cc0c97 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/oop_inherit.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.10.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.10.png new file mode 100644 index 000000000..2c3309a17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.11.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.11.png new file mode 100644 index 000000000..2c3309a17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.12.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.12.png new file mode 100644 index 000000000..2c3309a17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.13.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.13.png new file mode 100644 index 000000000..0b6c66e07 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.14.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.14.png new file mode 100644 index 000000000..0b6c66e07 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.15.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.15.png new file mode 100644 index 000000000..0b6c66e07 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.16.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.16.png new file mode 100644 index 000000000..8aa928348 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.17.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.17.png new file mode 100644 index 000000000..8aa928348 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.18.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.18.png new file mode 100644 index 000000000..8aa928348 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.19.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.19.png new file mode 100644 index 000000000..43b3374f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.2.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.2.png new file mode 100644 index 000000000..a7ad3f8f1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.20.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.20.png new file mode 100644 index 000000000..43b3374f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.21.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.21.png new file mode 100644 index 000000000..43b3374f0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.22.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.22.png new file mode 100644 index 000000000..7d4dd6cad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.23.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.23.png new file mode 100644 index 000000000..59bcb9211 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.24.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.24.png new file mode 100644 index 000000000..425ccaec6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.25.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.25.png new file mode 100644 index 000000000..62aa672b2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.26.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.26.png new file mode 100644 index 000000000..e0e06844d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.27.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.27.png new file mode 100644 index 000000000..a2a425a08 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.28.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.28.png new file mode 100644 index 000000000..64453be8b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.3.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.3.png new file mode 100644 index 000000000..ab31db6ec Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.4.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.4.png new file mode 100644 index 000000000..71256b15a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.5.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.5.png new file mode 100644 index 000000000..71256b15a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.6.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.6.png new file mode 100644 index 000000000..71256b15a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.7.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.7.png new file mode 100644 index 000000000..237b24826 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.8.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.8.png new file mode 100644 index 000000000..237b24826 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.9.png b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.9.png new file mode 100644 index 000000000..237b24826 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/csc108h/sum-list.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.10.png new file mode 100644 index 000000000..ce7b15aa4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.11.png new file mode 100644 index 000000000..cfeccf35b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.12.png new file mode 100644 index 000000000..658fb0759 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.13.png new file mode 100644 index 000000000..84d344063 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.14.png new file mode 100644 index 000000000..dd312d000 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.15.png new file mode 100644 index 000000000..1084042bf Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.16.png new file mode 100644 index 000000000..966c5107d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.17.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.17.png new file mode 100644 index 000000000..0d3fa49ea Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.18.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.18.png new file mode 100644 index 000000000..0d3fa49ea Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.19.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.19.png new file mode 100644 index 000000000..0615ab4a3 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.2.png new file mode 100644 index 000000000..dc74115b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.20.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.20.png new file mode 100644 index 000000000..620bc3fb7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.21.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.21.png new file mode 100644 index 000000000..620bc3fb7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.22.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.22.png new file mode 100644 index 000000000..9213cb664 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.23.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.23.png new file mode 100644 index 000000000..e0bac689d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.24.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.24.png new file mode 100644 index 000000000..501e445fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.25.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.25.png new file mode 100644 index 000000000..39e44c67c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.26.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.26.png new file mode 100644 index 000000000..39e44c67c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.27.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.27.png new file mode 100644 index 000000000..96e6a8c1f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.28.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.28.png new file mode 100644 index 000000000..35341b08b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.29.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.29.png new file mode 100644 index 000000000..35341b08b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.3.png new file mode 100644 index 000000000..a2b252cb9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.30.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.30.png new file mode 100644 index 000000000..a2f488ad7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.31.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.31.png new file mode 100644 index 000000000..7b5308f71 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.31.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.32.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.32.png new file mode 100644 index 000000000..450d3b05b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.32.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.4.png new file mode 100644 index 000000000..8138e2e54 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.5.png new file mode 100644 index 000000000..156d5f9d4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.6.png new file mode 100644 index 000000000..252bbeedb Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.7.png new file mode 100644 index 000000000..3fafddfd8 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.8.png new file mode 100644 index 000000000..c50cc7539 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.9.png new file mode 100644 index 000000000..5efd3b273 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.2.png new file mode 100644 index 000000000..074316b20 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.3.png new file mode 100644 index 000000000..00d454fd1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.4.png new file mode 100644 index 000000000..eb2615528 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.5.png new file mode 100644 index 000000000..b839e00d2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/aliasing8.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.10.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.10.png new file mode 100644 index 000000000..0860e0e54 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.11.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.11.png new file mode 100644 index 000000000..4432f75d1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.12.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.12.png new file mode 100644 index 000000000..a16c2c272 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.13.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.13.png new file mode 100644 index 000000000..436e93756 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.14.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.14.png new file mode 100644 index 000000000..b73245799 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.2.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.2.png new file mode 100644 index 000000000..953aa911b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.3.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.3.png new file mode 100644 index 000000000..a4b690746 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.4.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.4.png new file mode 100644 index 000000000..baf937bbd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.5.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.5.png new file mode 100644 index 000000000..328b2b666 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.6.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.6.png new file mode 100644 index 000000000..a0d5f0a5b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.7.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.7.png new file mode 100644 index 000000000..6f1b9058a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.8.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.8.png new file mode 100644 index 000000000..d32ba7cb5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.9.png b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.9.png new file mode 100644 index 000000000..901ac8fa4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/basic-data-structures.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/binary-tree.py.step.2.png b/v3/tests/frontend-tests/golden-files/regular/binary-tree.py.step.2.png new file mode 100644 index 000000000..a9dfdbf17 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/binary-tree.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.2.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.2.png new file mode 100644 index 000000000..f44a64597 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.3.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.3.png new file mode 100644 index 000000000..1c050074d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.4.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.4.png new file mode 100644 index 000000000..a735cc7bf Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.5.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.5.png new file mode 100644 index 000000000..003d68ed0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.6.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.6.png new file mode 100644 index 000000000..9f7abd2ff Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.7.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.7.png new file mode 100644 index 000000000..aef2497d9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.8.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.8.png new file mode 100644 index 000000000..8641ccaca Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/circular.py.step.9.png b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.9.png new file mode 100644 index 000000000..56cca856b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/circular.py.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.10.png new file mode 100644 index 000000000..20c6647c7 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.11.png new file mode 100644 index 000000000..205f12a26 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.12.png new file mode 100644 index 000000000..ab32457b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.13.png new file mode 100644 index 000000000..3f9838268 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.14.png new file mode 100644 index 000000000..3f9838268 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.15.png new file mode 100644 index 000000000..1b730e3a5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.16.png new file mode 100644 index 000000000..ab32457b1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.2.png new file mode 100644 index 000000000..122cfe307 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.3.png new file mode 100644 index 000000000..cd0f28720 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.4.png new file mode 100644 index 000000000..acfcb4aaa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.5.png new file mode 100644 index 000000000..acfcb4aaa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.6.png new file mode 100644 index 000000000..5265b6757 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.7.png new file mode 100644 index 000000000..14310f98f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.8.png new file mode 100644 index 000000000..14310f98f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.9.png new file mode 100644 index 000000000..8087a38ce Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/closure3.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.2.png b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.2.png new file mode 100644 index 000000000..d602755c6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.3.png b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.3.png new file mode 100644 index 000000000..ac6f38a8b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.4.png b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.4.png new file mode 100644 index 000000000..6c8991230 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/criss-cross.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.2.png b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.2.png new file mode 100644 index 000000000..12825e858 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.3.png b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.3.png new file mode 100644 index 000000000..67cb9e591 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.4.png b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.4.png new file mode 100644 index 000000000..2033d90bc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.5.png b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.5.png new file mode 100644 index 000000000..ef333bd95 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.6.png b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.6.png new file mode 100644 index 000000000..de579a8d5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/double-nudge.py.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.10.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.11.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.12.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.13.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.14.png new file mode 100644 index 000000000..bf2c60d9a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.15.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.16.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.17.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.17.png new file mode 100644 index 000000000..e2d63ba47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.18.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.18.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.19.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.19.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.2.png new file mode 100644 index 000000000..162420b98 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.20.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.20.png new file mode 100644 index 000000000..e9ccceb34 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.21.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.21.png new file mode 100644 index 000000000..bd2837bdd Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.22.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.22.png new file mode 100644 index 000000000..acc8c3710 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.23.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.23.png new file mode 100644 index 000000000..624400f13 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.24.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.24.png new file mode 100644 index 000000000..73468b4d9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.25.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.25.png new file mode 100644 index 000000000..447fca63d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.26.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.26.png new file mode 100644 index 000000000..988f28d45 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.27.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.27.png new file mode 100644 index 000000000..162420b98 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.3.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.4.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.5.png new file mode 100644 index 000000000..b44e8266f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.6.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.7.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.8.png new file mode 100644 index 000000000..ee40735b9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.9.png new file mode 100644 index 000000000..d8fac5146 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/fact.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.10.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.11.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.12.png new file mode 100644 index 000000000..740491b2a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.13.png new file mode 100644 index 000000000..82ea7a79e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.14.png new file mode 100644 index 000000000..82ea7a79e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.15.png new file mode 100644 index 000000000..7c10fcc9f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.16.png new file mode 100644 index 000000000..a2ddf242d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.17.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.17.png new file mode 100644 index 000000000..a2ddf242d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.18.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.18.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.19.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.19.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.2.png new file mode 100644 index 000000000..2f1269ce6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.20.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.20.png new file mode 100644 index 000000000..7f82c53fe Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.3.png new file mode 100644 index 000000000..b81c64cd6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.4.png new file mode 100644 index 000000000..072757d06 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.5.png new file mode 100644 index 000000000..072757d06 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.6.png new file mode 100644 index 000000000..d161f4329 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.7.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.8.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.9.png new file mode 100644 index 000000000..05441f73b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/filter.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.10.png new file mode 100644 index 000000000..ac1e25774 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.11.png new file mode 100644 index 000000000..b5d615143 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.12.png new file mode 100644 index 000000000..359cef590 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.13.png new file mode 100644 index 000000000..1b5503dfa Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.14.png new file mode 100644 index 000000000..d01c82f3d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.15.png new file mode 100644 index 000000000..d01c82f3d Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.16.png new file mode 100644 index 000000000..90966c779 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.17.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.17.png new file mode 100644 index 000000000..7f484f896 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.18.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.18.png new file mode 100644 index 000000000..bdfe631f2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.19.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.19.png new file mode 100644 index 000000000..39a413cf6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.2.png new file mode 100644 index 000000000..714e375da Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.20.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.20.png new file mode 100644 index 000000000..e509ca0d6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.21.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.21.png new file mode 100644 index 000000000..f2df9ceb6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.22.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.22.png new file mode 100644 index 000000000..6b89706a4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.23.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.23.png new file mode 100644 index 000000000..8ff65562f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.24.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.24.png new file mode 100644 index 000000000..d28aa13f4 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.25.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.25.png new file mode 100644 index 000000000..5a0bb14bc Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.26.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.26.png new file mode 100644 index 000000000..c8d9c9981 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.27.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.27.png new file mode 100644 index 000000000..7271d791f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.28.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.28.png new file mode 100644 index 000000000..2a1f55e4e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.29.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.29.png new file mode 100644 index 000000000..2a1f55e4e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.29.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.3.png new file mode 100644 index 000000000..2f3214cad Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.30.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.30.png new file mode 100644 index 000000000..2e7090cd8 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.30.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.4.png new file mode 100644 index 000000000..0b46bcea5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.5.png new file mode 100644 index 000000000..c29223c7b Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.6.png new file mode 100644 index 000000000..a823339ab Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.7.png new file mode 100644 index 000000000..f8d85ac28 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.8.png new file mode 100644 index 000000000..c208d0739 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.9.png new file mode 100644 index 000000000..0daadd628 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/ll1.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.10.png new file mode 100644 index 000000000..d5142b0d2 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.11.png new file mode 100644 index 000000000..a61b62a1f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.2.png new file mode 100644 index 000000000..50dcfef1c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.3.png new file mode 100644 index 000000000..2a9878903 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.4.png new file mode 100644 index 000000000..eef30004c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.5.png new file mode 100644 index 000000000..eef30004c Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.6.png new file mode 100644 index 000000000..2aef6fc61 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.7.png new file mode 100644 index 000000000..e77095a12 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.8.png new file mode 100644 index 000000000..e77095a12 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.9.png new file mode 100644 index 000000000..d401420d0 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/oop_inherit.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.10.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.10.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.10.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.11.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.11.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.11.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.12.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.12.png new file mode 100644 index 000000000..c23f31ce1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.12.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.13.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.13.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.13.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.14.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.14.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.14.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.15.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.15.png new file mode 100644 index 000000000..cc5208330 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.15.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.16.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.16.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.16.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.17.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.17.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.17.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.18.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.18.png new file mode 100644 index 000000000..bef2c7a90 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.18.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.19.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.19.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.19.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.2.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.2.png new file mode 100644 index 000000000..8fb0dbf9f Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.2.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.20.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.20.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.20.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.21.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.21.png new file mode 100644 index 000000000..93c275586 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.21.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.22.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.22.png new file mode 100644 index 000000000..5d8a39e47 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.22.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.23.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.23.png new file mode 100644 index 000000000..f81ef9574 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.23.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.24.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.24.png new file mode 100644 index 000000000..1d416359e Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.24.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.25.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.25.png new file mode 100644 index 000000000..e73dc83ee Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.25.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.26.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.26.png new file mode 100644 index 000000000..325fe7e16 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.26.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.27.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.27.png new file mode 100644 index 000000000..94b35e9e5 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.27.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.28.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.28.png new file mode 100644 index 000000000..d70e3e6a1 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.28.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.3.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.3.png new file mode 100644 index 000000000..6f9a2bef6 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.3.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.4.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.4.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.4.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.5.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.5.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.5.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.6.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.6.png new file mode 100644 index 000000000..3e9f84cc9 Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.6.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.7.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.7.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.7.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.8.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.8.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.8.png differ diff --git a/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.9.png b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.9.png new file mode 100644 index 000000000..d87cc078a Binary files /dev/null and b/v3/tests/frontend-tests/golden-files/regular/sum-list.txt.step.9.png differ diff --git a/v3/tests/frontend-tests/opt_frontend_golden_test.py b/v3/tests/frontend-tests/opt_frontend_golden_test.py new file mode 100644 index 000000000..462276b29 --- /dev/null +++ b/v3/tests/frontend-tests/opt_frontend_golden_test.py @@ -0,0 +1,175 @@ +''' +Golden tests for OPT frontend JS rendering +Created on 2014-04-21 + +Pre-reqs: +- phantomjs installed (tested on v1.9.2) +- ImageMagick installed to do fuzzy image diffing + (tested on Version: ImageMagick 6.8.8-3 Q16 x86_64 2014-01-12 http://www.imagemagick.org) + http://www.imagemagick.org/Usage/compare/ +- OPT running locally on localhost:8080 using "python bottle_server.py" +- execute from the current directory + +--- +Forked from ../golden_test.py + +A simple framework for regression testing based on golden files +by Philip Guo + +(sloppily) customized for the Online Python Tutor project +''' + +# test with different display options +''' +HTML_DICT = { + 'regular': 'visualize.html', + 'csc108h': 'csc108h.html', + 'composingprograms': 'composingprograms.html', +} +''' + +OPTIONS_DICT = { + 'regular': 'cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&py=2', + 'csc108h': 'cumulative=false&heapPrimitives=true&drawParentPointers=false&textReferences=true&py=2', + 'composingprograms': 'cumulative=true&heapPrimitives=false&drawParentPointers=false&textReferences=false&py=3', +} + +import os, re, shutil, optparse, filecmp +from subprocess import * + +RED = '\033[91m' +ENDC = '\033[0m' # end color + + +def execute(input_filename, option_name): + assert os.path.isfile(input_filename) + (base, ext) = os.path.splitext(input_filename) + + args = [input_filename, 'localhost:8080', 'visualize.html', OPTIONS_DICT[option_name]] + (stdout, stderr) = Popen(PROGRAM + args, + stdout=PIPE, stderr=PIPE).communicate() + + +def clobber_golden_file(outfile, golden_file): + print ' Clobber %s => %s' % (outfile, golden_file) + shutil.copy(outfile, golden_file) + +# trivial EXACT FILE MATCH comparison, which works only if you're +# running on the exact same machine! +''' +def png_files_differ(f1, f2): + return not filecmp.cmp(f1, f2) +''' + +# fuzzy image comparison using ImageMagick +# see: http://www.imagemagick.org/Usage/compare/ +# compare -metric AE -fuzz 1% aliasing.txt.step.2.png.regular.png ../golden-files/regular/aliasing.txt.step.3.png -compose src -highlight-color White -lowlight-color Black cmp.png +DIFF_PNG = '/tmp/diff.png' +def png_files_differ(f1, f2): + + # adjust fuzz to a higher percentage if it's not sensitive enough + # /tmp/diff.png shows pixel differences, + # and the number of differed pixels is sent to stderr + cmdline = ['compare', '-metric', 'AE', '-fuzz', '3%', + f1, f2, + '-compose', 'src', '-highlight-color', 'White', + '-lowlight-color', 'Black', DIFF_PNG] + (stdout, stderr) = Popen(cmdline, stdout=PIPE, stderr=PIPE).communicate() + assert stderr + if 'image widths or heights differ' in stderr: + if os.path.isfile(DIFF_PNG): + os.remove(DIFF_PNG) + return True + else: + num_pixels_diff = int(stderr) + return num_pixels_diff != 0 + + +def run_test(input_filename, clobber_golden=False): + try: + print 'Testing', input_filename + bn = os.path.basename(input_filename) + + # test all frontend display options + for option in OPTIONS_DICT: + print " " + option + execute(input_filename, option) + + output_png_files = [e for e in os.listdir('.') if bn + '.step.' in e] + if not output_png_files: + print " " + RED + "no output .png files, maybe server is down?" + ENDC + + + for e in output_png_files: + golden_file = 'golden-files/' + option + '/' + e + + if os.path.isfile(golden_file): + if png_files_differ(e, golden_file): + print " " + RED + e + " differs, moved to failed-tests/" + ENDC + + # save it under a new name in failed-tests/ + newname = 'failed-tests/' + os.path.splitext(e)[0] + '.' + option + '.png' + os.rename(e, newname) + # ... and the diff too, if it exists: + if os.path.isfile(DIFF_PNG): + os.rename(DIFF_PNG, os.path.splitext(newname)[0] + '.diff.png') + + if clobber_golden: + clobber_golden_file(newname, golden_file) + else: + clobber_golden_file(e, golden_file) + + finally: + # do a crude cleanup pass at the very end of the test + # to not interfere as much with Dropbox's weird behavior + for e in os.listdir('.'): + if '.step.' in e: + os.remove(e) + + +def run_all_tests(clobber=False): + for t in ALL_TESTS: + run_test(t, clobber) + + +if __name__ == "__main__": + parser = optparse.OptionParser() + parser.add_option("--all", action="store_true", dest="run_all", + help="Run all tests") + parser.add_option("--clobber", action="store_true", dest="clobber", + help="Clobber golden files when running tests") + parser.add_option("--test", dest="test_name", + help="Run one test") + (options, args) = parser.parse_args() + + PROGRAM = ['phantomjs', '../../screenshot-renderer/render-opt-screenshots.js'] + + # grab a representative subset of backend tests + # don't need ALL of them since they run way too slowly + ALL_TESTS = ['../example-code/aliasing.txt', + '../example-code/fact.txt', + '../example-code/filter.txt', + '../example-code/aliasing/aliasing8.txt', + '../example-code/oop_inherit.txt', + '../example-code/linked-lists/ll1.txt', + '../example-code/sum-list.txt', + '../example-code/closures/closure3.txt', + 'basic-data-structures.py', + 'criss-cross.py', + 'binary-tree.py', + 'circular.py', + 'double-nudge.py', + ] + + if options.run_all: + if options.clobber: + print 'Running all tests and clobbering results ...' + else: + print 'Running all tests ...' + run_all_tests(options.clobber) + elif options.test_name: + assert options.test_name in ALL_TESTS + run_test(options.test_name, options.clobber) + else: + parser.print_help() + diff --git a/v3/tests/golden_test.py b/v3/tests/golden_test.py new file mode 100644 index 000000000..f8195162b --- /dev/null +++ b/v3/tests/golden_test.py @@ -0,0 +1,191 @@ +''' +A simple framework for regression testing based on golden files +by Philip Guo + +(sloppily) customized for the Online Python Tutor project + +THIS ONLY WORKS ON Python 2.7 and 3.2 +(note that Python 3.3 gives all sorts of weird non-deterministic errors, so use Python 3.2 for now) + +Also note that the Python 3 tests aren't as "robust" or as rigorously checked ... +I've been focusing on Python 2 for now. +''' + +import os, re, shutil, optparse, difflib +from subprocess import * + +RED = '\033[91m' +ENDC = '\033[0m' # end color + +def filter_output(s): + return s + + +def execute(input_filename): + assert os.path.isfile(input_filename) + (base, ext) = os.path.splitext(input_filename) + assert ext == INPUT_FILE_EXTENSION + + (stdout, stderr) = Popen(PROGRAM + [input_filename], stdout=PIPE, stderr=PIPE).communicate() + + if stderr: + print '(has stderr)' + # print ' stderr {' + # print stderr, '}' + else: + print + + # capture stdout into outfile, filtering out machine-specific addresses + outfile = base + OUTPUT_FILE_EXTENSION + outf = open(outfile, 'w') + + for line in stdout.splitlines(): + filtered_line = re.sub(' 0x.+?>', ' 0xADDR>', line) + print >> outf, filtered_line + + outf.close() + + +def clobber_golden_file(golden_file): + (base, ext) = os.path.splitext(golden_file) + outfile = base + OUTPUT_FILE_EXTENSION + assert os.path.isfile(outfile) + print ' Clobber %s => %s' % (outfile, golden_file) + shutil.copy(outfile, golden_file) + + +# returns True if there is a diff, False otherwise +def golden_differs_from_out(golden_file): + (base, ext) = os.path.splitext(golden_file) + outfile = base + OUTPUT_FILE_EXTENSION + assert os.path.isfile(outfile) + assert os.path.isfile(golden_file) + + golden_s = open(golden_file).readlines() + out_s = open(outfile).readlines() + + golden_s_filtered = filter_output(golden_s) + out_s_filtered = filter_output(out_s) + + return out_s_filtered != golden_s_filtered + + +def diff_test_output(test_name): + (base, ext) = os.path.splitext(test_name) + + golden_file = base + GOLDEN_FILE_EXTENSION + assert os.path.isfile(golden_file) + outfile = base + OUTPUT_FILE_EXTENSION + assert os.path.isfile(outfile) + + golden_s = open(golden_file).readlines() + out_s = open(outfile).readlines() + + golden_s_filtered = filter_output(golden_s) + out_s_filtered = filter_output(out_s) + + first_line = True + for line in difflib.unified_diff(golden_s_filtered, out_s_filtered, \ + fromfile=golden_file, tofile=outfile): + if first_line: + print # print an extra line to ease readability + first_line = False + print line, + + +def run_test(input_filename, clobber_golden=False): + print 'Testing', input_filename, + + (base, ext) = os.path.splitext(input_filename) + assert ext == INPUT_FILE_EXTENSION + + # to eliminate possibility of using stale output: + outfile = base + OUTPUT_FILE_EXTENSION + if os.path.isfile(outfile): + os.remove(outfile) + + input_fullpath = input_filename + execute(input_fullpath) + + golden_file = base + GOLDEN_FILE_EXTENSION + if os.path.isfile(golden_file): + if golden_differs_from_out(golden_file): + print " " + RED + "FAILED!!!" + ENDC + if clobber_golden: + clobber_golden_file(golden_file) + else: + clobber_golden_file(golden_file) + + +def run_all_tests(clobber=False): + for t in ALL_TESTS: + run_test(t, clobber) + +def diff_all_test_outputs(): + for t in ALL_TESTS: + diff_test_output(t) + + +if __name__ == "__main__": + parser = optparse.OptionParser() + parser.add_option("--all", action="store_true", dest="run_all", + help="Run all tests") + parser.add_option("--only-clobber", action="store_true", dest="only_clobber", + help="Clobber ALL golden files WITHOUT re-running tests") + parser.add_option("--clobber", action="store_true", dest="clobber", + help="Clobber golden files when running tests") + parser.add_option("--test", dest="test_name", + help="Run one test") + parser.add_option("--difftest", dest="diff_test_name", + help="Diff against golden file for one test") + parser.add_option("--diffall", action="store_true", dest="diff_all", + help="Diff against golden file for all tests") + parser.add_option("--py3", action="store_true", dest="py3", + help="Run tests using Python 3.2 (rather than Python 2.7)") + (options, args) = parser.parse_args() + + + INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py + + if options.py3: + PROGRAM = ['python3.2', '../generate_json_trace.py'] + OUTPUT_FILE_EXTENSION = '.out_py3' + GOLDEN_FILE_EXTENSION = '.golden_py3' + else: + PROGRAM = ['python2.7', '../generate_json_trace.py'] + OUTPUT_FILE_EXTENSION = '.out' + GOLDEN_FILE_EXTENSION = '.golden' + + ALL_TESTS = [] + + for (pwd, subdirs, files) in os.walk('.', followlinks=True): # need to follow example-code symlink + for f in files: + (base, ext) = os.path.splitext(f) + if ext == INPUT_FILE_EXTENSION: + fullpath = os.path.join(pwd, f) + ALL_TESTS.append(fullpath) + + + if options.run_all: + if options.clobber: + print 'Running all tests and clobbering results ...' + else: + print 'Running all tests ...' + run_all_tests(options.clobber) + + elif options.diff_all: + diff_all_test_outputs() + elif options.diff_test_name: + assert options.diff_test_name in ALL_TESTS + diff_test_output(options.diff_test_name) + elif options.test_name: + assert options.test_name in ALL_TESTS + run_test(options.test_name, options.clobber) + elif options.only_clobber: + for t in ALL_TESTS: + (base, ext) = os.path.splitext(t) + golden_file = base + GOLDEN_FILE_EXTENSION + clobber_golden_file(golden_file) + else: + parser.print_help() + diff --git a/v3/tests/run-all-tests.sh b/v3/tests/run-all-tests.sh new file mode 100755 index 000000000..40b4e7577 --- /dev/null +++ b/v3/tests/run-all-tests.sh @@ -0,0 +1,8 @@ +#!/bin/sh +echo 'Python 2.7 test' +echo '===============' +python golden_test.py --all +echo +echo 'Python 3.2 test' +echo '===============' +python golden_test.py --all --py3 diff --git a/v3/ttt_module.py b/v3/ttt_module.py new file mode 100644 index 000000000..a1031a302 --- /dev/null +++ b/v3/ttt_module.py @@ -0,0 +1,173 @@ +""" +Tic Tac Toe (and more generally, 2-D grid environments) that display in browser. + +Created by Peter Norvig + +NB: need to work on both Python 2 and 3 +""" + +############################################################################## +# CSS and HTML +############################################################################## + +if False: + def setCSS(text): + "Set (or append??) CSS to be text." + global __CSS__ + __CSS__ = text + print('setCSS: ' + text) + + def setHTML(text): + "Set (or append??) HTML to be text." + global __HTML__ + __HTML__ = text + print('setHTML: ' + text) + + +def tagger(tagname): + "Make a function that can be used to generate HTML." + def tagfn(*content, **kwargs): + args = ('' if not kwargs else + ' ' + ' '.join('{}={!r}'.format(k, kwargs[k]) for k in kwargs)) + return "<{}{}>{}".format( + tagname, args, join(content), tagname) + #tagfn.__name__ = tagname # not allowed in OPT sandbox + return tagfn + +A, B, I, P, TABLE, TR, TD, TH = map(tagger, 'A B I P, TABLE TR TD TH'.split()) + +def join(content): + "Like ' '.join(content), but recurses into nested lists." + return (content if isinstance(content, str) else + ' '.join(map(join, content)) if isinstance(content, (list, tuple)) else + str(content)) + +# Python 3 doesn't have xrange, so bind it to range +try: + _ = xrange +except NameError: + xrange = range + +def table(matrix, **kwargs): + """Given [[a, b, c], [d, e, f]], lay it out as a table. + Each cell gets an id number, starting at 0. Table can have kwargs.""" + ints = iter(xrange(1000000)) + return TABLE([TR([TD(c, id=next(ints)) for c in row]) + for row in matrix], + **kwargs) + + +css = """#htmlOutputDiv table, #htmlOutputDiv td, #htmlOutputDiv th { + background-color: white; + border-collapse: collapse; + border: 2px solid black; } +#htmlOutputDiv td, #htmlOutputDiv th { + width: 30px; + height: 30px; + font-family: sans-serif; + text-align: center; }""" + + + +class Game(object): + "Move stuff here later" + pass + +class TTTGame(Game): + def __init__(self, player1, player2, verbose=True): + print('Initializing TTTGame') + self.board = [' '] * 9 # board is 1-D array of squares; can be mapped to 2-D. + self.tomove = 0 + self.symbols = ['X', 'O'] + self.players = [player1, player2] # player strategy functions + self.lines = [(0, 1, 2), (3, 4, 5), (6, 7, 8), + (0, 3, 6), (1, 4, 7), (2, 5, 8), + (0, 4, 8), (2, 4, 6)] + self.winner = None + self.verbose = verbose + + # mouse handler for board + # TODO: clean this up + setJS("$('#htmlOutputDiv table td').click(function(){myVisualizer.executeCodeWithRawInputFunc($(this).attr('id'), myVisualizer.curInstr)})") + + + def draw(self): + setCSS(css) + s = table([[self.board[3*r + c] for c in range(3)] for r in range(3)]) + if self.over(): + s += P('Game over; ', 'nobody' if self.winner is None else self.symbols[self.winner], ' wins') + else: + s += P(self.symbols[self.tomove] + ' to play') + if self.verbose: print(s) + setHTML(s) + return s + + def play(self): + self.draw() + #while not self.over(): + for i in range(2): + p = self.tomove + move = self.players[p](list(self.board), self.symbols[p]) + self.makemove(move) + self.draw() + + def displayWarning(self, msg): + print('WARNING! ' + msg) + + def makemove(self, move): + player = self.tomove + print('making move ' + str(move) + ' for player ' + str(player)) + if self.over(): + self.displayWarning('game over, no more moves') + elif move not in range(9): + self.displayWarning('not a legal square ' + str(move)) + return None + elif self.board[move] != ' ': + self.displayWarning('not an empty square ' + str(move)) + return None + else: + self.board[move] = self.symbols[player] + self.tomove = other(player) + return move + + def legal(self, move): + "A legal move is an index to a blank square." + return move in range(9) and self.board[move] == ' ' + + def over(self): + "Return True when game is over." + if ' ' not in self.board: + winner = None + return True # no moves left; game is a draw + for player in [0, 1]: + for line in self.lines: + if self.linecount(line, player) == 3: + self.winner = player + return True + return False + + def playgame(self): + while not self.over(): + self.makemove() + + def linecount(self, line, player): + "Return the number of pieces that player (0 or 1) has on this line." + return [self.board[i] for i in line].count(self.symbols[player]) + + def illegalmove(self, move): + "Report that move is illegal; decrement remaining count for player." + ## How to report ??? + self.allowed_illegal_moves[self.tomove] -= 1 + if self.allowed_illegal_moves[self.tomove] < 0: + ### Report game over on illegal move ??? + self.winner = other(self.tomove) + + def copystate(self): + clone = TTTGame(*self.players) + clone.tomove = self.tomove + clone.board = list(self.board) + return clone + + +def other(player): return 1 - player + diff --git a/v3/visualize.html b/v3/visualize.html new file mode 100644 index 000000000..41139553c --- /dev/null +++ b/v3/visualize.html @@ -0,0 +1,341 @@ + + + + + + + Online Python Tutor - Visualize program execution + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + +
      + +
      + +
      + + + +
      + +
      + + + +
      + + +
      + +
      Write + + + +code here or load an example:
      +
      +
      +
      + +

      + +

      + +

      +Options: + + + + + +

      + + +

      Examples to visualize

      + +

      Basic: + +hello | +happy | +intro | +filter | +tokenize | +insertion sort +

      + +

      Math: +factorial | +fibonacci | +memoized fibonacci | +square root | +gcd | +towers of hanoi +

      + +

      User Input: + +raw input + +

      + +

      Objects: + +OOP 1 | +OOP 2 | +OOP 3 | +inheritance + +

      + +

      Linked Lists: +LL 1 | +LL 2 | +LL sum +

      + +

      Pointer Aliasing:
      +aliasing 1 | +aliasing 2 | +aliasing 3 | +aliasing 4 +
      +aliasing 5 | +aliasing 6 | +aliasing 7 | +aliasing 8 | +sumList +

      + +

      Higher-Order Functions:
      + +closure 1 | +closure 2 | +closure 3 | +closure 4 | +closure 5 +
      + +list map | +summation | +lambda param | +student torture + +

      + +

      Python Tricks:
      +list comprehension | +list/set/dict comp | +decorators | +generators | +gen expr +
      +varargs | +exceptions | +for-else | +nonlocal | +metaclass +

      + +

      +HTML +rendering (experimental code by +Chris Meyers):
      +[WARNING: will set toggle option from "show everything" to "show only outputs"]
      + +minPath | +knapsack | +sieve | +fib + +

      + +
      + + +
      +
      + + + + + diff --git a/v3/watch_module.py b/v3/watch_module.py new file mode 100644 index 000000000..a8e229698 --- /dev/null +++ b/v3/watch_module.py @@ -0,0 +1,59 @@ +# Created by Peter Norvig + +# TODO: need to somehow enable sys._getframe() +# even though 'sys' is technically locked down + +#import inspect # old and really slow! +import sys + +class watchedlist(list): + """A class that wraps a list, and monitors sets and gets. + Optionally monitors local variables.""" + def __setitem__(self, i, val): + print('setting A[{}] = {}'.format(i, val)) + self.watchlocals() + return list.__setitem__(self, i, val) + def __getitem__(self, i): + print('fetching A[{}]; value is {};'.format( + self, i, list.__getitem__(self, i))) + self.watchlocals() + return list.__getitem__(self, i) + + def watchlocals(self): + if hasattr(self, 'watchedlocals'): + #D = inspect.stack()[2][0].f_locals # old and really slow! + D = sys._getframe(2).f_locals + print(' watched locals: {}'.format( + {var: D[var] for var in self.watchedlocals})) + + +def watch(object, watchedspec): + """Wrap object with a wrapper class (like watchedlist). + watchedspec is either None or a callable (like watchedlist), or + a 2-tuple of (callable, local_var_names), where local_var_names + can be a string or a sequence of strings.""" + if not watchedspec: + return object + kind, locals = (watchedspec if isinstance(watchedspec, (tuple, list)) else + (watchedspec, ())) + if isinstance(locals, str): locals = locals.split() + watched = kind(object) + watched.watchedlocals = locals + return watched + + +class watchfn(object): + """Decorator that watches the arguments of a function. + Specify watchedspecs for each positional argument, and optionally + for keyword arguments.""" + def __init__(self, *args, **kwargs): + self.args, self.kwargs = args, kwargs + + def __call__(self, fn): + def wrapped_fn(*args, **kwargs): + args = [watch(obj, spec) for (obj, spec) in zip(args, self.args)] + kwargs = {k: watch(kwargs[k], self.args.get(k, None)) for k in kwargs} + return fn(*args, **kwargs) + #wrapped_fn.__name__ = fn.__name__ + return wrapped_fn + diff --git a/v3/web_exec.py b/v3/web_exec.py new file mode 100644 index 000000000..06d0f3f8b --- /dev/null +++ b/v3/web_exec.py @@ -0,0 +1,81 @@ +# + +# Minimal CGI script for Online Python Tutor (v3), tested under Python 2 and 3 + +# If you want to run this script, then you'll need to change the +# shebang #! line at the top of this file to point to your system's Python. +# +# Also, check CGI execute permission in your script directory. +# You might need to create an .htaccess file like the following: +# +# Options +ExecCGI +# AddHandler cgi-script .py + + +import cgi +import json +import pg_logger +import sys + + +# set to true if you want to log queries in DB_FILE +LOG_QUERIES = False + +if LOG_QUERIES: + import os, datetime, create_log_db, sqlite3 + + +def cgi_finalizer(input_code, output_trace): + """Write JSON output for js/pytutor.js as a CGI result.""" + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr + + if LOG_QUERIES: + # just to be paranoid, don't croak the whole program just + # because there's some error in logging it to the database + try: + # log queries into sqlite database. + # make sure that your web server's account has write permissions + # in the current directory, for logging to work properly + con = sqlite3.connect(create_log_db.DB_FILE) + cur = con.cursor() + + cur.execute("INSERT INTO query_log VALUES (NULL, ?, ?, ?, ?, ?, ?)", + (datetime.datetime.now(), + os.environ.get("REMOTE_ADDR", "N/A"), + os.environ.get("HTTP_USER_AGENT", "N/A"), + os.environ.get("HTTP_REFERER", "N/A"), + user_script, + int(cumulative_mode))) + con.commit() + cur.close() + except Exception as err: + # this is bad form, but silently fail on error ... + print(err) + + print("Content-type: text/plain; charset=iso-8859-1\n") + print(json_output) + +raw_input_json = None +options_json = None + +# If you pass in a filename as an argument, then process script from that file ... +if len(sys.argv) > 1: + user_script = open(sys.argv[1]).read() + +# Otherwise act like a CGI script with parameters: +# user_script +# raw_input_json +# options_json +else: + form = cgi.FieldStorage() + user_script = form['user_script'].value + # for Python 2, immediately convert to utf-8 before passing input into program + if hasattr(user_script, 'decode'): + user_script = user_script.decode('utf-8') + if 'raw_input_json' in form: + raw_input_json = form['raw_input_json'].value + if 'options_json' in form: + options_json = form['options_json'].value + +pg_logger.exec_script_str(user_script, raw_input_json, options_json, cgi_finalizer)